From 521741fe56602cfcca5515bf680689d122e7251e Mon Sep 17 00:00:00 2001 From: Felipe Bormann Date: Thu, 4 May 2017 15:22:19 -0300 Subject: [PATCH] fixed views and urls to pass test for most_accessed_subjects view --- analytics/tests/test_api.py | 55 ------------------------------------------------------- analytics/tests/test_general_dashboard.py | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ analytics/urls.py | 1 + analytics/views.py | 14 +++++++++++--- 4 files changed, 106 insertions(+), 58 deletions(-) delete mode 100644 analytics/tests/test_api.py create mode 100644 analytics/tests/test_general_dashboard.py diff --git a/analytics/tests/test_api.py b/analytics/tests/test_api.py deleted file mode 100644 index a4976a9..0000000 --- a/analytics/tests/test_api.py +++ /dev/null @@ -1,55 +0,0 @@ -from django.test import TestCase, Client, override_settings -from django.core.urlresolvers import resolve -from reports.views import ReportView -from subjects.models import Subject, Tag -from users.models import User -from topics.models import Topic, Resource -from chat.models import Conversation, TalkMessages -from datetime import datetime -from log.models import Log -from django.db.models import Q -from ..views import most_used_tags -from django.http import HttpResponse, JsonResponse - -class APIDashBoardTest(TestCase): - - def setUp(self): - self.c = Client() - self.student = User.objects.create(username = "student01", email= "student01@amadeus.br", password="amadeus") - if self.c.login(email="student01@amadeus.br", password="amadeus"): - print("student01 logged in") - - - def test_most_used_tags(self): - - """ - testing if the catches all tags used in a resource and in a subject - """ - t = Tag(name="felipe") - t.save() - t1 = Tag(name="b2") - t1.save() - - s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), - subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) - s1.tags.add(t) - s1.save() - s2 = Subject.objects.create(name="subject dois", visible= True, init_date= datetime.now(), end_date= datetime.now(), - subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) - s2.tags.add(t) - s2.save() - r1 = Resource.objects.create(name="resource um") - r1.tags.add(t1) - r1.save() - - - expected_data = [{'name': 'felipe', 'count': 2}, {'name':'b2', 'count': 1}] - data = self.c.get('/analytics/most_used_tags/') - self.assertEqual(data.status_code, 200 ) - self.assertJSONEqual(str(data.content, encoding='UTF-8'), expected_data) - - def test_most_accessed_subjects(self): - return None - - def test_most_active_users(self): - return None diff --git a/analytics/tests/test_general_dashboard.py b/analytics/tests/test_general_dashboard.py new file mode 100644 index 0000000..7561882 --- /dev/null +++ b/analytics/tests/test_general_dashboard.py @@ -0,0 +1,94 @@ +from django.test import TestCase, Client, override_settings +from django.core.urlresolvers import resolve +from reports.views import ReportView +from subjects.models import Subject, Tag +from users.models import User +from topics.models import Topic, Resource +from chat.models import Conversation, TalkMessages +from categories.models import Category +from datetime import datetime +from log.models import Log +from django.db.models import Q +from ..views import most_used_tags, most_accessed_subjects +from django.http import HttpResponse, JsonResponse + +class APIDashBoardTest(TestCase): + + def setUp(self): + self.c = Client() + self.student = User.objects.create(username = "student01", email= "student01@amadeus.br") + self.student.set_password("amadeus") #because of the hash function used + self.student.save() + if self.c.login(email="student01@amadeus.br", password="amadeus"): + print("student01 logged in") + + self.student02 = User.objects.create(username= "student02", email = "student02@amadeus.br") + self.student02.set_password("amadeus") + self.student02.save() + self.category = Category(name= "category 01") + self.category.save() + + def test_most_used_tags(self): + + """ + testing if the catches all tags used in a resource and in a subject + """ + t = Tag(name="felipe") + t.save() + t1 = Tag(name="b2") + t1.save() + + s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) + s1.tags.add(t) + s1.save() + s2 = Subject.objects.create(name="subject dois", visible= True, init_date= datetime.now(), end_date= datetime.now(), + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) + s2.tags.add(t) + s2.save() + r1 = Resource.objects.create(name="resource um") + r1.tags.add(t1) + r1.save() + + + expected_data = [{'name': 'felipe', 'count': 2}, {'name':'b2', 'count': 1}] + data = self.c.get('/analytics/most_used_tags/') + self.assertEqual(data.status_code, 200 ) + self.assertJSONEqual(str(data.content, encoding='UTF-8'), expected_data) + + @override_settings(STATICFILES_STORAGE = None) # added decorator + def test_most_accessed_subjects(self): + """ + test if we collect the correct amount of access to a subject + """ + s1 = Subject.objects.create(name="subject", visible= True, init_date= datetime.now(), end_date= datetime.now(), + subscribe_begin = datetime.now(), subscribe_end= datetime.now() ) + s1.students.add(self.student) + s1.students.add(self.student02) + s1.category = self.category + s1.save() + + response = self.c.get('/subjects/view/'+str(s1.slug)+'/') + print(response) + self.assertEqual(response.status_code, 200) + + self.c.logout() #logout student one + if self.c.login(email="student02@amadeus.br", password="amadeus"): + print("student02 logged in") + + response = self.c.get('/subjects/view/'+str(s1.slug)+'/') + self.assertEqual(response.status_code, 200) + + response = self.c.get('/analytics/most_accessed_subjects/') + self.assertEqual(response.status_code, 200) + expected_data = [{'name': s1.name, 'count': 2}] + self.assertJSONEqual(str(response.content, encoding = 'UTF-8'), expected_data) + + + + + def test_most_accessed_categories(self): + self.fail("finish the test") + + def test_most_active_users(self): + self.fail("finish the test") diff --git a/analytics/urls.py b/analytics/urls.py index 8923fac..89cf2e5 100644 --- a/analytics/urls.py +++ b/analytics/urls.py @@ -7,4 +7,5 @@ urlpatterns = [ #"api" callls url(r'^most_used_tags/$', views.most_used_tags, name="most_used_tags"), + url(r'^most_accessed_subjects/$', views.most_accessed_subjects, name="most_accessed_subjects"), ] \ No newline at end of file diff --git a/analytics/views.py b/analytics/views.py index a268fb9..4228a04 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -8,6 +8,7 @@ from subjects.models import Tag, Subject from topics.models import Resource from users.models import User from django.http import HttpResponse, JsonResponse +from log.models import Log class GeneralView(generic.TemplateView): @@ -53,7 +54,7 @@ def heatmap(request): Subject view that returns a list of the most used subjects """ -def most_acessed_subjects(request): +def most_accessed_subjects(request): data = {} #empty response data = Log.objects.filter(resource = 'subject') @@ -63,9 +64,9 @@ def most_acessed_subjects(request): subject_id = datum.context['subject_id'] if subject_id in subjects.keys(): subjects[subject_id]['count'] = subjects[subject_id]['count'] + 1 - else: - subjects[subject_id] = {'name': datum.context['subject_name'], 'count':0 } + else: + subjects[subject_id] = {'name': datum.context['subject_name'], 'count': 1 } #order the values of the dictionary by the count in descendent order subjects = sorted(subjects.values(), key = lambda x: x['count'], reverse=True ) @@ -76,6 +77,13 @@ def most_acessed_subjects(request): def most_accessed_categories(request): + data = {} + + data = Log.objects.filter('category') + categories = {} + for datum in data: + if datum.context: + pass return None def most_accessed_resource_kind(request): -- libgit2 0.21.2