Commit 521741fe56602cfcca5515bf680689d122e7251e
1 parent
658c9639
Exists in
master
and in
2 other branches
fixed views and urls to pass test for most_accessed_subjects view
Showing
4 changed files
with
106 additions
and
58 deletions
Show diff stats
analytics/tests/test_api.py
... | ... | @@ -1,55 +0,0 @@ |
1 | -from django.test import TestCase, Client, override_settings | |
2 | -from django.core.urlresolvers import resolve | |
3 | -from reports.views import ReportView | |
4 | -from subjects.models import Subject, Tag | |
5 | -from users.models import User | |
6 | -from topics.models import Topic, Resource | |
7 | -from chat.models import Conversation, TalkMessages | |
8 | -from datetime import datetime | |
9 | -from log.models import Log | |
10 | -from django.db.models import Q | |
11 | -from ..views import most_used_tags | |
12 | -from django.http import HttpResponse, JsonResponse | |
13 | - | |
14 | -class APIDashBoardTest(TestCase): | |
15 | - | |
16 | - def setUp(self): | |
17 | - self.c = Client() | |
18 | - self.student = User.objects.create(username = "student01", email= "student01@amadeus.br", password="amadeus") | |
19 | - if self.c.login(email="student01@amadeus.br", password="amadeus"): | |
20 | - print("student01 logged in") | |
21 | - | |
22 | - | |
23 | - def test_most_used_tags(self): | |
24 | - | |
25 | - """ | |
26 | - testing if the catches all tags used in a resource and in a subject | |
27 | - """ | |
28 | - t = Tag(name="felipe") | |
29 | - t.save() | |
30 | - t1 = Tag(name="b2") | |
31 | - t1.save() | |
32 | - | |
33 | - s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), | |
34 | - subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) | |
35 | - s1.tags.add(t) | |
36 | - s1.save() | |
37 | - s2 = Subject.objects.create(name="subject dois", visible= True, init_date= datetime.now(), end_date= datetime.now(), | |
38 | - subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) | |
39 | - s2.tags.add(t) | |
40 | - s2.save() | |
41 | - r1 = Resource.objects.create(name="resource um") | |
42 | - r1.tags.add(t1) | |
43 | - r1.save() | |
44 | - | |
45 | - | |
46 | - expected_data = [{'name': 'felipe', 'count': 2}, {'name':'b2', 'count': 1}] | |
47 | - data = self.c.get('/analytics/most_used_tags/') | |
48 | - self.assertEqual(data.status_code, 200 ) | |
49 | - self.assertJSONEqual(str(data.content, encoding='UTF-8'), expected_data) | |
50 | - | |
51 | - def test_most_accessed_subjects(self): | |
52 | - return None | |
53 | - | |
54 | - def test_most_active_users(self): | |
55 | - return None |
... | ... | @@ -0,0 +1,94 @@ |
1 | +from django.test import TestCase, Client, override_settings | |
2 | +from django.core.urlresolvers import resolve | |
3 | +from reports.views import ReportView | |
4 | +from subjects.models import Subject, Tag | |
5 | +from users.models import User | |
6 | +from topics.models import Topic, Resource | |
7 | +from chat.models import Conversation, TalkMessages | |
8 | +from categories.models import Category | |
9 | +from datetime import datetime | |
10 | +from log.models import Log | |
11 | +from django.db.models import Q | |
12 | +from ..views import most_used_tags, most_accessed_subjects | |
13 | +from django.http import HttpResponse, JsonResponse | |
14 | + | |
15 | +class APIDashBoardTest(TestCase): | |
16 | + | |
17 | + def setUp(self): | |
18 | + self.c = Client() | |
19 | + self.student = User.objects.create(username = "student01", email= "student01@amadeus.br") | |
20 | + self.student.set_password("amadeus") #because of the hash function used | |
21 | + self.student.save() | |
22 | + if self.c.login(email="student01@amadeus.br", password="amadeus"): | |
23 | + print("student01 logged in") | |
24 | + | |
25 | + self.student02 = User.objects.create(username= "student02", email = "student02@amadeus.br") | |
26 | + self.student02.set_password("amadeus") | |
27 | + self.student02.save() | |
28 | + self.category = Category(name= "category 01") | |
29 | + self.category.save() | |
30 | + | |
31 | + def test_most_used_tags(self): | |
32 | + | |
33 | + """ | |
34 | + testing if the catches all tags used in a resource and in a subject | |
35 | + """ | |
36 | + t = Tag(name="felipe") | |
37 | + t.save() | |
38 | + t1 = Tag(name="b2") | |
39 | + t1.save() | |
40 | + | |
41 | + s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), | |
42 | + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) | |
43 | + s1.tags.add(t) | |
44 | + s1.save() | |
45 | + s2 = Subject.objects.create(name="subject dois", visible= True, init_date= datetime.now(), end_date= datetime.now(), | |
46 | + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) | |
47 | + s2.tags.add(t) | |
48 | + s2.save() | |
49 | + r1 = Resource.objects.create(name="resource um") | |
50 | + r1.tags.add(t1) | |
51 | + r1.save() | |
52 | + | |
53 | + | |
54 | + expected_data = [{'name': 'felipe', 'count': 2}, {'name':'b2', 'count': 1}] | |
55 | + data = self.c.get('/analytics/most_used_tags/') | |
56 | + self.assertEqual(data.status_code, 200 ) | |
57 | + self.assertJSONEqual(str(data.content, encoding='UTF-8'), expected_data) | |
58 | + | |
59 | + @override_settings(STATICFILES_STORAGE = None) # added decorator | |
60 | + def test_most_accessed_subjects(self): | |
61 | + """ | |
62 | + test if we collect the correct amount of access to a subject | |
63 | + """ | |
64 | + s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), | |
65 | + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) | |
66 | + s1.students.add(self.student) | |
67 | + s1.students.add(self.student02) | |
68 | + s1.category = self.category | |
69 | + s1.save() | |
70 | + | |
71 | + response = self.c.get('/subjects/view/'+str(s1.slug)+'/') | |
72 | + print(response) | |
73 | + self.assertEqual(response.status_code, 200) | |
74 | + | |
75 | + self.c.logout() #logout student one | |
76 | + if self.c.login(email="student02@amadeus.br", password="amadeus"): | |
77 | + print("student02 logged in") | |
78 | + | |
79 | + response = self.c.get('/subjects/view/'+str(s1.slug)+'/') | |
80 | + self.assertEqual(response.status_code, 200) | |
81 | + | |
82 | + response = self.c.get('/analytics/most_accessed_subjects/') | |
83 | + self.assertEqual(response.status_code, 200) | |
84 | + expected_data = [{'name': s1.name, 'count': 2}] | |
85 | + self.assertJSONEqual(str(response.content, encoding = 'UTF-8'), expected_data) | |
86 | + | |
87 | + | |
88 | + | |
89 | + | |
90 | + def test_most_accessed_categories(self): | |
91 | + self.fail("finish the test") | |
92 | + | |
93 | + def test_most_active_users(self): | |
94 | + self.fail("finish the test") | ... | ... |
analytics/urls.py
analytics/views.py
... | ... | @@ -8,6 +8,7 @@ from subjects.models import Tag, Subject |
8 | 8 | from topics.models import Resource |
9 | 9 | from users.models import User |
10 | 10 | from django.http import HttpResponse, JsonResponse |
11 | +from log.models import Log | |
11 | 12 | |
12 | 13 | |
13 | 14 | class GeneralView(generic.TemplateView): |
... | ... | @@ -53,7 +54,7 @@ def heatmap(request): |
53 | 54 | Subject view that returns a list of the most used subjects """ |
54 | 55 | |
55 | 56 | |
56 | -def most_acessed_subjects(request): | |
57 | +def most_accessed_subjects(request): | |
57 | 58 | data = {} #empty response |
58 | 59 | |
59 | 60 | data = Log.objects.filter(resource = 'subject') |
... | ... | @@ -63,9 +64,9 @@ def most_acessed_subjects(request): |
63 | 64 | subject_id = datum.context['subject_id'] |
64 | 65 | if subject_id in subjects.keys(): |
65 | 66 | subjects[subject_id]['count'] = subjects[subject_id]['count'] + 1 |
66 | - else: | |
67 | - subjects[subject_id] = {'name': datum.context['subject_name'], 'count':0 } | |
68 | 67 | |
68 | + else: | |
69 | + subjects[subject_id] = {'name': datum.context['subject_name'], 'count': 1 } | |
69 | 70 | |
70 | 71 | #order the values of the dictionary by the count in descendent order |
71 | 72 | subjects = sorted(subjects.values(), key = lambda x: x['count'], reverse=True ) |
... | ... | @@ -76,6 +77,13 @@ def most_acessed_subjects(request): |
76 | 77 | |
77 | 78 | |
78 | 79 | def most_accessed_categories(request): |
80 | + data = {} | |
81 | + | |
82 | + data = Log.objects.filter('category') | |
83 | + categories = {} | |
84 | + for datum in data: | |
85 | + if datum.context: | |
86 | + pass | |
79 | 87 | return None |
80 | 88 | |
81 | 89 | def most_accessed_resource_kind(request): | ... | ... |