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   -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 @@
  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 7  
8 8 #"api" callls
9 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 12 \ No newline at end of file
... ...
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):
... ...