コード例 #1
0
    def test_two_courses_with_overlapping_content_and_no_project_or_content_progress(
        self,
    ):
        generate_all_content_cards_for_user(self.user)

        for content in self.unflavoured_content:
            count = len(models.AgileCard.objects.filter(content_item=content))
            self.assertEqual(count, 1)

        for content in self.flavoured_content:
            cards = models.AgileCard.objects.filter(content_item=content)
            self.assertEqual(len(cards), 2)
            # for card in cards:

            options = [card.flavour_names for card in cards]
            option_counts = [len(l) for l in options]
            self.assertEqual(option_counts, [1, 1])
            flat_options = sorted([s for l in options for s in l])
            self.assertEqual(flat_options, [JAVASCRIPT, TYPESCRIPT])

            # [o.content_options for o in models.AgileCard.objects.filter(content_item=content)

        cards = models.AgileCard.objects.all()
        self.assertEqual(
            len(cards), 9
        )  # 3 for each course + 3 for the stuff that overlaps
コード例 #2
0
 def test_generate_cards_twice_for_one_course(self):
     registration = CourseRegistrationFactory(curriculum=self.js_curriculum)
     user = registration.user
     generate_all_content_cards_for_user(user)
     self.assertEqual(
         models.AgileCard.objects.filter(assignees__in=[user]).count(), 3)
     generate_all_content_cards_for_user(user)
     self.assertEqual(
         models.AgileCard.objects.filter(assignees__in=[user]).count(), 3)
コード例 #3
0
    def handle(self, *args, **options):
        user = User.objects.get(email=options["email"])
        AgileCard.objects.filter(assignees__in=[user]).delete()
        CourseRegistration.objects.filter(user=user).delete()

        name = options["curriculum"]
        curriculum = Curriculum.objects.get(Q(short_name=name) | Q(name=name))

        CourseRegistration.objects.create(user=user, curriculum=curriculum)

        generate_all_content_cards_for_user(user)
コード例 #4
0
    def test_card_prerequisites_take_options_into_account(self):

        models.ContentItemOrder.objects.create(post=self.project1,
                                               pre=self.topic1)
        models.ContentItemOrder.objects.create(post=self.project1,
                                               pre=self.topic2)
        models.ContentItemOrder.objects.create(post=self.project2,
                                               pre=self.topic2)

        generate_all_content_cards_for_user(self.user)

        # project 2 has no options. So there will only be one and it will have only one prereq
        project2_card = models.AgileCard.objects.get(
            content_item=self.project2)
        project2_requirement = project2_card.requires_cards.get()
        # self.assertEqual(len(project2_requirement), 1)
        self.assertEqual(project2_requirement.content_item, self.topic2)
        self.assertEqual(project2_card.content_flavour_names, [])
        self.assertEqual(project2_requirement.content_flavour_names, [])

        # project 1 has pre-req and two different flavours
        project1_cards = models.AgileCard.objects.filter(
            content_item=self.project1)

        for card in project1_cards:
            # they both require topic 1, topic1 has no options so it's the same card
            self.assertTrue(project2_requirement in card.requires_cards.all())

        ts_project_card = [
            card for card in project1_cards
            if TYPESCRIPT in card.content_flavour_names
        ][0]

        js_project_card = [
            card for card in project1_cards
            if JAVASCRIPT in card.content_flavour_names
        ][0]

        ts_required_card = ts_project_card.requires_cards.filter(
            content_item=self.topic1).get()
        self.assertEqual(ts_required_card.content_flavour_names, [TYPESCRIPT])

        js_required_card = js_project_card.requires_cards.filter(
            content_item=self.topic1).get()
        self.assertEqual(js_required_card.content_flavour_names, [JAVASCRIPT])