def test_setting_the_same_value_marks_field_as_dirty(): """ Check that setting field to the same value marks mutable fields as dirty. However, since the value hasn't changed, these fields won't be saved. """ class FieldTester(XBlock): """Test block for set - get test.""" non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) runtime = TestRuntime(services={'field-data': DictFieldData({})}) field_tester = FieldTester(runtime, scope_ids=Mock(spec=ScopeIds)) # precondition checks assert_equals(len(field_tester._dirty_fields), 0) assert_false(field_tester.fields['list_field'].is_set_on(field_tester)) assert_false(field_tester.fields['dict_field'].is_set_on(field_tester)) assert_false(field_tester.fields['non_mutable'].is_set_on(field_tester)) field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field assert_not_in(field_tester.fields['non_mutable'], field_tester._dirty_fields) assert_in(field_tester.fields['list_field'], field_tester._dirty_fields) assert_in(field_tester.fields['dict_field'], field_tester._dirty_fields) assert_false(field_tester.fields['non_mutable'].is_set_on(field_tester)) assert_false(field_tester.fields['list_field'].is_set_on(field_tester)) assert_false(field_tester.fields['dict_field'].is_set_on(field_tester))
def test_setting_the_same_value_marks_field_as_dirty(): """ Check that setting field to the same value marks mutable fields as dirty. However, since the value hasn't changed, these fields won't be saved. """ class FieldTester(XBlock): """Test block for set - get test.""" non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) runtime = TestRuntime(services={'field-data': DictFieldData({})}) field_tester = FieldTester(runtime, scope_ids=Mock(spec=ScopeIds)) # precondition checks assert_equals(len(field_tester._dirty_fields), 0) assert_false(field_tester.fields['list_field'].is_set_on(field_tester)) assert_false(field_tester.fields['dict_field'].is_set_on(field_tester)) assert_false(field_tester.fields['non_mutable'].is_set_on(field_tester)) field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field assert_not_in(field_tester.fields['non_mutable'], field_tester._dirty_fields) assert_in(field_tester.fields['list_field'], field_tester._dirty_fields) assert_in(field_tester.fields['dict_field'], field_tester._dirty_fields) assert_false(field_tester.fields['non_mutable'].is_set_on(field_tester)) assert_false(field_tester.fields['list_field'].is_set_on(field_tester)) assert_false(field_tester.fields['dict_field'].is_set_on(field_tester))
def test_view_counter_state(): key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) tester = ViewCounter(Mock(), db_model, Mock()) assert_equals(tester.views, 0) # View the XBlock five times for i in xrange(5): generated_html = tester.student_view({}) # Make sure the html fragment we're expecting appears in the body_html assert_in('<span class="views">{0}</span>'.format(i + 1), generated_html.body_html()) assert_equals(tester.views, i + 1)
def test_view_counter_state(): key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) tester = ViewCounter(Mock(), db_model, Mock()) assert_equals(tester.views, 0) # View the XBlock five times for i in xrange(5): generated_html = tester.student_view({}) # Make sure the html fragment we're expecting appears in the body_html assert_in('<span class="views">{0}</span>'.format(i + 1), generated_html.body_html()) assert_equals(tester.views, i + 1)
def test_view_counter_state(): key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = TestRuntime(services={'field-data': field_data}) tester = ViewCounter(runtime, scope_ids=Mock()) assert_equals(tester.views, 0) # View the XBlock five times for i in xrange(5): generated_html = tester.student_view({}) # Make sure the html fragment we're expecting appears in the body_html assert_in('<span class="views">{0}</span>'.format(i + 1), generated_html.body_html()) assert_equals(tester.views, i + 1)
def test_view_counter_state(): key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = Runtime(services={'field-data': field_data}) tester = ViewCounter(runtime, scope_ids=Mock()) assert_equals(tester.views, 0) # View the XBlock five times for i in range(5): generated_html = tester.student_view({}) # Make sure the html fragment we're expecting appears in the body_html assert_in('<span class="views">{0}</span>'.format(i + 1), generated_html.body_html()) assert_equals(tester.views, i + 1)
def test_json_handler_basic(): test_self = Mock() test_data = {"foo": "bar", "baz": "quux"} test_data_json = [ '{"foo": "bar", "baz": "quux"}', '{"baz": "quux", "foo": "bar"}' ] test_suffix = "suff" test_request = Mock(method="POST", body=test_data_json[0]) @XBlock.json_handler def test_func(self, request, suffix): assert_equals(self, test_self) assert_equals(request, test_data) assert_equals(suffix, test_suffix) return request response = test_func(test_self, test_request, test_suffix) assert_equals(response.status_code, 200) assert_in(response.body.decode('utf-8'), test_data_json) assert_equals(response.content_type, "application/json")
def test_runtime_render(): key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = MockRuntimeForQuerying(services={'field-data': field_data}) block_type = 'test' def_id = runtime.id_generator.create_definition(block_type) usage_id = runtime.id_generator.create_usage(def_id) tester = TestXBlock(runtime, scope_ids=ScopeIds('user', block_type, def_id, usage_id)) # string we want to update using the handler update_string = u"user state update" # test against the student view frag = runtime.render(tester, 'student_view', [update_string]) assert_in(update_string, frag.body_html()) assert_equals(tester.preferences, update_string) # test against the fallback view update_string = u"new update" frag = runtime.render(tester, 'test_fallback_view', [update_string]) assert_in(update_string, frag.body_html()) assert_equals(tester.preferences, update_string) # test block-first update_string = u"penultimate update" frag = tester.render('student_view', [update_string]) assert_in(update_string, frag.body_html()) assert_equals(tester.preferences, update_string) # test against the no-fallback XBlock update_string = u"ultimate update" tester = TestXBlockNoFallback(Mock(), scope_ids=Mock(spec=ScopeIds)) with assert_raises(NoSuchViewError): runtime.render(tester, 'test_nonexistent_view', [update_string])
def test_setting_the_same_value_marks_field_as_dirty(): """ Check that setting field to the same value does not mark mutable fields as dirty. This might be an unexpected behavior though """ class FieldTester(XBlock): """Test block for set - get test.""" non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) runtime = TestRuntime(services={'field-data': DictFieldData({})}) field_tester = FieldTester(runtime, scope_ids=Mock(spec=ScopeIds)) # precondition checks assert_equals(len(field_tester._dirty_fields), 0) assert_false(field_tester.fields['list_field'].is_set_on(field_tester)) assert_false(field_tester.fields['dict_field'].is_set_on(field_tester)) assert_false(field_tester.fields['non_mutable'].is_set_on(field_tester)) field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field assert_in(field_tester.fields['non_mutable'], field_tester._dirty_fields) assert_in(field_tester.fields['list_field'], field_tester._dirty_fields) assert_in(field_tester.fields['dict_field'], field_tester._dirty_fields) assert_true(field_tester.fields['non_mutable'].is_set_on(field_tester)) assert_true(field_tester.fields['list_field'].is_set_on(field_tester)) assert_true(field_tester.fields['dict_field'].is_set_on(field_tester))
def test_multiple_views(): client = Client() # The default view is student_view response = client.get("/view/multiview/") assert_in("This is student view!", response.content) # We can ask for student_view directly response = client.get("/view/multiview/student_view/") assert_in("This is student view!", response.content) # We can also ask for another view. response = client.get("/view/multiview/another_view/") assert_in("This is another view!", response.content)
def test_multiple_views(): client = Client() # The default view is student_view response = client.get("/view/multiview/") assert_in("This is student view!", response.content) # We can ask for student_view directly response = client.get("/view/multiview/student_view/") assert_in("This is student view!", response.content) # We can also ask for another view. response = client.get("/view/multiview/another_view/") assert_in("This is another view!", response.content)
def test_bad_handler_urls(): client = Client() response = client.get("/view/with-handlers/try_bad_handler_urls/") assert_equals(response.status_code, 200) assert_in("Everything is Fine!", response.content)
def test_bad_handler_urls(): client = Client() response = client.get("/view/with-handlers/try_bad_handler_urls/") assert_equals(response.status_code, 200) assert_in("Everything is Fine!", response.content)
def test_student_view(self): xblock = self.make_xblock() student_view_html = xblock.student_view() assert_in(xblock.media_id, student_view_html.body_html())