test_basic.py 1.95 KB
Newer Older
1 2 3 4
"""
Tests for instructor.basic
"""

Miles Steele committed
5 6 7 8
from django.test import TestCase
from student.models import CourseEnrollment
from student.tests.factories import UserFactory

9
from analytics.basic import enrolled_students_features, AVAILABLE_FEATURES, STUDENT_FEATURES, PROFILE_FEATURES
Miles Steele committed
10 11 12


class TestAnalyticsBasic(TestCase):
13
    """ Test basic analytics functions. """
Miles Steele committed
14 15 16 17

    def setUp(self):
        self.course_id = 'some/robot/course/id'
        self.users = tuple(UserFactory() for _ in xrange(30))
18 19
        self.ces = tuple(CourseEnrollment.enroll(user, self.course_id)
                         for user in self.users)
Miles Steele committed
20

21
    def test_enrolled_students_features_username(self):
Miles Steele committed
22
        self.assertIn('username', AVAILABLE_FEATURES)
23
        userreports = enrolled_students_features(self.course_id, ['username'])
Miles Steele committed
24 25 26 27 28
        self.assertEqual(len(userreports), len(self.users))
        for userreport in userreports:
            self.assertEqual(userreport.keys(), ['username'])
            self.assertIn(userreport['username'], [user.username for user in self.users])

29
    def test_enrolled_students_features_keys(self):
Miles Steele committed
30 31 32
        query_features = ('username', 'name', 'email')
        for feature in query_features:
            self.assertIn(feature, AVAILABLE_FEATURES)
33
        userreports = enrolled_students_features(self.course_id, query_features)
Miles Steele committed
34 35 36 37 38 39 40 41 42 43
        self.assertEqual(len(userreports), len(self.users))
        for userreport in userreports:
            self.assertEqual(set(userreport.keys()), set(query_features))
            self.assertIn(userreport['username'], [user.username for user in self.users])
            self.assertIn(userreport['email'], [user.email for user in self.users])
            self.assertIn(userreport['name'], [user.profile.name for user in self.users])

    def test_available_features(self):
        self.assertEqual(len(AVAILABLE_FEATURES), len(STUDENT_FEATURES + PROFILE_FEATURES))
        self.assertEqual(set(AVAILABLE_FEATURES), set(STUDENT_FEATURES + PROFILE_FEATURES))