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,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 @@ | @@ -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
@@ -7,4 +7,5 @@ urlpatterns = [ | @@ -7,4 +7,5 @@ urlpatterns = [ | ||
7 | 7 | ||
8 | #"api" callls | 8 | #"api" callls |
9 | url(r'^most_used_tags/$', views.most_used_tags, name="most_used_tags"), | 9 | url(r'^most_used_tags/$', views.most_used_tags, name="most_used_tags"), |
10 | + url(r'^most_accessed_subjects/$', views.most_accessed_subjects, name="most_accessed_subjects"), | ||
10 | ] | 11 | ] |
11 | \ No newline at end of file | 12 | \ No newline at end of file |
analytics/views.py
@@ -8,6 +8,7 @@ from subjects.models import Tag, Subject | @@ -8,6 +8,7 @@ from subjects.models import Tag, Subject | ||
8 | from topics.models import Resource | 8 | from topics.models import Resource |
9 | from users.models import User | 9 | from users.models import User |
10 | from django.http import HttpResponse, JsonResponse | 10 | from django.http import HttpResponse, JsonResponse |
11 | +from log.models import Log | ||
11 | 12 | ||
12 | 13 | ||
13 | class GeneralView(generic.TemplateView): | 14 | class GeneralView(generic.TemplateView): |
@@ -53,7 +54,7 @@ def heatmap(request): | @@ -53,7 +54,7 @@ def heatmap(request): | ||
53 | Subject view that returns a list of the most used subjects """ | 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 | data = {} #empty response | 58 | data = {} #empty response |
58 | 59 | ||
59 | data = Log.objects.filter(resource = 'subject') | 60 | data = Log.objects.filter(resource = 'subject') |
@@ -63,9 +64,9 @@ def most_acessed_subjects(request): | @@ -63,9 +64,9 @@ def most_acessed_subjects(request): | ||
63 | subject_id = datum.context['subject_id'] | 64 | subject_id = datum.context['subject_id'] |
64 | if subject_id in subjects.keys(): | 65 | if subject_id in subjects.keys(): |
65 | subjects[subject_id]['count'] = subjects[subject_id]['count'] + 1 | 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 | #order the values of the dictionary by the count in descendent order | 71 | #order the values of the dictionary by the count in descendent order |
71 | subjects = sorted(subjects.values(), key = lambda x: x['count'], reverse=True ) | 72 | subjects = sorted(subjects.values(), key = lambda x: x['count'], reverse=True ) |
@@ -76,6 +77,13 @@ def most_acessed_subjects(request): | @@ -76,6 +77,13 @@ def most_acessed_subjects(request): | ||
76 | 77 | ||
77 | 78 | ||
78 | def most_accessed_categories(request): | 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 | return None | 87 | return None |
80 | 88 | ||
81 | def most_accessed_resource_kind(request): | 89 | def most_accessed_resource_kind(request): |