Ejemplo n.º 1
0
    def test_can_mark_block_complete_on_view(self, mode, has_score, has_custom_completion, can_mark_complete):
        block = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        block.completion_mode = mode
        block.has_score = has_score
        if has_custom_completion:
            block.has_custom_completion = True

        self.assertEqual(self.completion_service.can_mark_block_complete_on_view(block), can_mark_complete)
Ejemplo n.º 2
0
    def test_blocks_to_mark_complete_on_view(self):

        completable_block_1 = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        usage_id_1 = UsageKey.from_string("i4x://edX/100/a/1").replace(course_key=self.course_key)
        completable_block_1.scope_ids.usage_id = usage_id_1
        completable_block_2 = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        usage_id_2 = UsageKey.from_string("i4x://edX/100/a/2").replace(course_key=self.course_key)
        completable_block_2.scope_ids.usage_id = usage_id_2
        aggregator_block = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        usage_id_3 = UsageKey.from_string("i4x://edX/100/a/3").replace(course_key=self.course_key)
        aggregator_block.scope_ids.usage_id = usage_id_3
        aggregator_block.completion_mode = XBlockCompletionMode.AGGREGATOR

        self.assertEqual(self.completion_service.blocks_to_mark_complete_on_view([]), [])

        self.assertEqual(
            self.completion_service.blocks_to_mark_complete_on_view([aggregator_block]), []
        )

        self.assertEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                [completable_block_1, completable_block_2, aggregator_block]
            ),
            [completable_block_1, completable_block_2]
        )

        BlockCompletion.objects.submit_completion(
            user=self.user,
            block_key=completable_block_2.scope_ids.usage_id,
            completion=1.0
        )

        self.assertEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                [completable_block_1, completable_block_2, aggregator_block]
            ),
            [completable_block_1]
        )

        BlockCompletion.objects.submit_completion(
            user=self.user,
            block_key=completable_block_1.scope_ids.usage_id,
            completion=1.0
        )

        self.assertEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                [completable_block_1, completable_block_2, aggregator_block]
            ),
            []
        )
Ejemplo n.º 3
0
    def test_blocks_to_mark_complete_on_view(self):

        completable_block_1 = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        completable_block_1.location = UsageKey.from_string(
            "i4x://edX/100/a/1").replace(course_key=self.course_key)
        completable_block_2 = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        completable_block_2.location = UsageKey.from_string(
            "i4x://edX/100/a/2").replace(course_key=self.course_key)
        aggregator_block = XBlock(Mock(), scope_ids=Mock(spec=ScopeIds))
        aggregator_block.location = UsageKey.from_string(
            "i4x://edX/100/a/3").replace(course_key=self.course_key)
        aggregator_block.completion_mode = XBlockCompletionMode.AGGREGATOR

        self.assertSetEqual(
            self.completion_service.blocks_to_mark_complete_on_view({}), set())

        self.assertSetEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                {aggregator_block}), set())

        self.assertSetEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                {completable_block_1, completable_block_2, aggregator_block}),
            {completable_block_1, completable_block_2})

        BlockCompletion.objects.submit_completion(
            user=self.user,
            course_key=self.course_key,
            block_key=completable_block_2.location,
            completion=1.0)

        self.assertSetEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                {completable_block_1, completable_block_2, aggregator_block}),
            {completable_block_1})

        BlockCompletion.objects.submit_completion(
            user=self.user,
            course_key=self.course_key,
            block_key=completable_block_1.location,
            completion=1.0)

        self.assertSetEqual(
            self.completion_service.blocks_to_mark_complete_on_view(
                {completable_block_1, completable_block_2, aggregator_block}),
            set())