def test_in_loop(self): test_plan = TestPlanFactory() test_run = TestRunFactory() test_case_one = TestCaseFactory() test_case_two = TestCaseFactory() test_plan.add_tag(self.tag_one) test_plan.add_tag(self.tag_two) test_plan.add_tag(self.tag_three) test_case_one.add_tag(self.tag_one) test_case_one.add_tag(self.tag_three) test_run.add_tag(self.tag_two) test_case_two.add_tag(self.tag_three) test_plan_tags = TestPlanTag.objects.filter( tag__in=self.tags).values('tag').annotate( num_plans=Count('tag')).order_by('tag') test_case_tags = TestCaseTag.objects.filter( tag__in=self.tags).values('tag').annotate( num_cases=Count('tag')).order_by('tag') test_run_tags = TestRunTag.objects.filter( tag__in=self.tags).values('tag').annotate( num_runs=Count('tag')).order_by('tag') plan_counter = _TagCounter('num_plans', test_plan_tags) case_counter = _TagCounter('num_cases', test_case_tags) run_counter = _TagCounter('num_runs', test_run_tags) for tag in self.tags: tag.num_plans = plan_counter.calculate_tag_count(tag) tag.num_cases = case_counter.calculate_tag_count(tag) tag.num_runs = run_counter.calculate_tag_count(tag) self.assertEqual(self.tag_one.num_plans, 1) self.assertEqual(self.tag_two.num_plans, 1) self.assertEqual(self.tag_three.num_plans, 1) self.assertEqual(self.tag_one.num_cases, 1) self.assertEqual(self.tag_two.num_cases, 0) self.assertEqual(self.tag_three.num_cases, 2) self.assertEqual(self.tag_one.num_runs, 0) self.assertEqual(self.tag_two.num_runs, 1) self.assertEqual(self.tag_three.num_runs, 0)
def test_with_empty_query(self): """Given an empty TestCaseTag QuerySet we expect the result of all the counting to be 0""" test_case_tags = TestCaseTag.objects.filter(tag=-1).values('tag').annotate( num_cases=Count('tag')).order_by('tag') case_tag_counter = _TagCounter('num_cases', test_case_tags) count_for_tag_one = case_tag_counter.calculate_tag_count(self.tag_one) count_for_tag_two = case_tag_counter.calculate_tag_count(self.tag_two) self.assertEqual(count_for_tag_one, 0) self.assertEqual(count_for_tag_two, 0)
def test_with_tag_not_in_query(self): """Given a QuerySet that does not contain a given tag,the count for this tag should be 0""" test_case = TestCaseFactory() test_case.add_tag(self.tag_one) test_case_tags = TestCaseTag.objects.filter( tag=self.tag_one).values('tag').annotate( num_cases=Count('tag')).order_by('tag') case_tag_counter = _TagCounter('num_cases', test_case_tags) count_for_tag_one = case_tag_counter.calculate_tag_count(self.tag_one) count_for_tag_two = case_tag_counter.calculate_tag_count(self.tag_two) self.assertEqual(count_for_tag_one, 1) self.assertEqual(count_for_tag_two, 0)