def test_search_with_pagination_two_per_page(self):
        # page 0
        (users, count, per_page) = search(q='lannister',
                                          user=self.admin,
                                          per_page=2,
                                          page=0)
        self.assertEqual(6, count)
        self.assertEqual(2, len(users))
        self.assertEqual(2, per_page)
        self.assertEqual('Cersei Lannister', users[0]['name'])
        self.assertEqual('Jaime Lannister', users[1]['name'])

        # page 1
        (users, count, per_page) = search(q='lannister',
                                          user=self.admin,
                                          per_page=2,
                                          page=1)
        self.assertEqual(6, count)
        self.assertEqual(2, len(users))
        self.assertEqual(2, per_page)
        self.assertEqual('Kevan Lannister', users[0]['name'])
        self.assertEqual('Lancel Lannister', users[1]['name'])

        # page 2
        (users, count, per_page) = search(q='lannister',
                                          user=self.admin,
                                          per_page=2,
                                          page=2)
        self.assertEqual(6, count)
        self.assertEqual(2, len(users))
        self.assertEqual(2, per_page)
        self.assertEqual('Tyrion Lannister', users[0]['name'])
        self.assertEqual('Tywin Lannister', users[1]['name'])
 def test_search_result_count_exceeds_max(self):
     (courses, count, per_page) = search(q='Course',
                                         user=self.admin,
                                         per_page=2)
     self.assertEqual(2, len(courses))
     self.assertEqual(CourseKVStore.objects.count(), count)
     self.assertEqual(2, per_page)
 def test_search_result_count_exceeds_max(self):
     (groups, count, per_page) = search(q='Group',
                                        user=self.admin,
                                        per_page=5)
     self.assertEqual(5, len(groups))
     self.assertEqual(GroupKVStore.objects.count(), count)
     self.assertEqual(5, per_page)
 def test_search_with_multiple_excludes(self):
     c1 = {'id': self.course001, 'type': u'c'}
     c2 = {'id': self.course002, 'type': u'c'}
     (courses, count, _) = search(q='Course',
                                  exclude=[c1, c2],
                                  user=self.user)
     self.assertEqual(0, count)
 def test_search_result_count_exceeds_max(self):
     (users, count, per_page) = search(q='lannister',
                                       user=self.admin,
                                       per_page=5)
     self.assertEqual(5, len(users))
     self.assertEqual(6, count)
     self.assertEqual(5, per_page)
 def test_excludes(self):
     excludes = [
         {
             'id': delimiter.join([self.course001, self.group001]),
             'type': u'g'
         },
         {
             'id': delimiter.join([self.course001, self.group002]),
             'type': u'g'
         },
         {
             'id': delimiter.join([self.course002, self.group001]),
             'type': u'g'
         },
     ]
     (groups, count, _) = search(q='Group',
                                 exclude=excludes,
                                 user=self.admin)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) - Group Two (Group)',
             'id': delimiter.join([self.course002, self.group002]),
             'type': u'g'
         }, groups[0])
 def test_search_two_results(self):
     (users, count, _) = search(q='ty', user=self.admin)
     self.assertEqual(2, count)
     self.assertDictEqual(
         {
             'name':
             ' '.join([
                 self.users['Tyrion'].first_name,
                 self.users['Tyrion'].last_name
             ]),
             'id':
             self.users['Tyrion'].id,
             'type':
             u'u'
         }, users[0])
     self.assertDictEqual(
         {
             'name':
             ' '.join([
                 self.users['Tywin'].first_name,
                 self.users['Tywin'].last_name
             ]),
             'id':
             self.users['Tywin'].id,
             'type':
             u'u'
         }, users[1])
 def test_search_with_multiple_excludes(self):
     tyrion = {'id': self.users['Tyrion'].id, 'type': u'u'}
     tywin = {'id': self.users['Tywin'].id, 'type': u'u'}
     (users, count, _) = search(q='lannister',
                                exclude=[tyrion, tywin],
                                user=self.admin)
     self.assertEqual(len(self.users) - 2, count)
 def test_search_one_result_against_name(self):
     (courses, count, _) = search(q='Maths', user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course One (Maths) (Module)',
             'id': self.course001,
             'type': u'c'
         }, courses[0])
    def test_search_with_pagination_ten_per_page(self):
        # page 0
        (users, count, per_page) = search(q='lannister',
                                          user=self.admin,
                                          per_page=10,
                                          page=0)
        self.assertEqual(6, count)
        self.assertEqual(6, len(users))
        self.assertEqual(10, per_page)

        # page 1 (empty, because only 6 users)
        (users, count, per_page) = search(q='lannister',
                                          user=self.admin,
                                          per_page=10,
                                          page=1)
        self.assertEqual(6, count)
        self.assertEqual(0, len(users))
        self.assertEqual(10, per_page)
 def test_search_one_result_against_vle_course_id(self):
     (courses, count, _) = search(q=self.course002, user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) (Module)',
             'id': self.course002,
             'type': u'c'
         }, courses[0])
 def test_search_one_result_against_vle_course_id(self):
     (groups, count, _) = search(q=self.course002, user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) - Group One (Group)',
             'id': delimiter.join([self.course002, self.group001]),
             'type': u'g'
         }, groups[0])
 def test_search_with_single_exclude(self):
     c = {'id': self.course001, 'type': u'c'}
     (courses, count, _) = search(q='Course', exclude=[c], user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) (Module)',
             'id': self.course002,
             'type': u'c'
         }, courses[0])
 def test_search_one_result_against_name(self):
     """
     there are three groups entitled "Group Two" of which Sansa Stark is in one
     """
     (groups, count, _) = search(q='Group Two', user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course One (Maths) - Group Two (Group)',
             'id': delimiter.join([self.course001, self.group002]),
             'type': u'g'
         }, groups[0])
 def test_search_with_single_exclude(self):
     g = {
         'id': delimiter.join([self.course001, self.group001]),
         'type': u'g'
     }
     (groups, count, _) = search(q='Group One', exclude=[g], user=self.user)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) - Group One (Group)',
             'id': delimiter.join([self.course002, self.group001]),
             'type': u'g'
         }, groups[0])
 def test_search_two_results_against_name(self):
     (courses, count, _) = search(q='Course', user=self.user)
     self.assertEqual(2, count)
     self.assertDictEqual(
         {
             'name': 'Course One (Maths) (Module)',
             'id': self.course001,
             'type': u'c'
         }, courses[0])
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) (Module)',
             'id': self.course002,
             'type': u'c'
         }, courses[1])
 def test_search_one_result(self):
     (users, count, _) = search(q='cersei', user=self.admin)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name':
             ' '.join([
                 self.users['Cersei'].first_name,
                 self.users['Cersei'].last_name
             ]),
             'id':
             self.users['Cersei'].id,
             'type':
             u'u'
         }, users[0])
 def test_search_with_single_exclude(self):
     tyrion = {'id': self.users['Tyrion'].id, 'type': u'u'}
     (users, count, _) = search(q='ty', exclude=[tyrion], user=self.admin)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name':
             ' '.join([
                 self.users['Tywin'].first_name,
                 self.users['Tywin'].last_name
             ]),
             'id':
             self.users['Tywin'].id,
             'type':
             u'u'
         }, users[0])
 def test_search_two_results_against_name(self):
     """
     there are three groups entitled "Group One" of which Sansa Stark is in two
     """
     (groups, count, _) = search(q='Group One', user=self.user)
     self.assertEqual(2, count)
     self.assertDictEqual(
         {
             'name': 'Course One (Maths) - Group One (Group)',
             'id': delimiter.join([self.course001, self.group001]),
             'type': u'g'
         }, groups[0])
     self.assertDictEqual(
         {
             'name': 'Course Two (Physics) - Group One (Group)',
             'id': delimiter.join([self.course002, self.group001]),
             'type': u'g'
         }, groups[1])
 def test_search_with_multiple_excludes(self):
     g1 = {
         'id': delimiter.join([self.course001, self.group001]),
         'type': u'g'
     }
     g2 = {
         'id': delimiter.join([self.course002, self.group001]),
         'type': u'g'
     }
     (groups, count, _) = search(q='Group One',
                                 exclude=[g1, g2],
                                 user=self.admin)
     self.assertEqual(1, count)
     self.assertDictEqual(
         {
             'name': 'Course Three (Maths) - Group One (Group)',
             'id': delimiter.join([self.course003, self.group001]),
             'type': u'g'
         }, groups[0])
 def test_search_no_results_against_name(self):
     (groups, count, _) = search(q='Group Three', user=self.user)
     self.assertEqual(0, count)
     self.assertListEqual([], groups)
 def test_search_many_results(self):
     (users, count, _) = search(q='lannister', user=self.admin)
     self.assertEqual(len(self.users), count)
 def test_search_no_results_against_vle_group_id(self):
     (groups, count, _) = search(q=self.group003, user=self.user)
     self.assertEqual(0, count)
     self.assertListEqual([], groups)
 def test_search_no_results(self):
     (users, count, _) = search(q='lanx', user=self.admin)
     self.assertEqual(0, count)
     self.assertListEqual([], users)
 def test_search_many_results(self):
     (groups, count, _) = search(q='Group', user=self.admin)
     self.assertEqual(GroupKVStore.objects.count(), count)
 def test_search_many_results(self):
     (courses, count, _) = search(q='Course', user=self.admin)
     self.assertEqual(CourseKVStore.objects.count(), count)
 def test_search_no_results_against_name(self):
     (courses, count, _) = search(q='Chemistry', user=self.user)
     self.assertEqual(0, count)
     self.assertListEqual([], courses)
 def test_search_no_results_against_vle_course_id(self):
     (courses, count, _) = search(q=self.course003, user=self.user)
     self.assertEqual(0, count)
     self.assertListEqual([], courses)