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)
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] ), [] )
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())