Commit 521741fe56602cfcca5515bf680689d122e7251e

Authored by Felipe Bormann
1 parent 658c9639

fixed views and urls to pass test for most_accessed_subjects view

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  
analytics/tests/test_general_dashboard.py 0 → 100644
@@ -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):