def _deserialise(raw_data): data = json.loads(raw_data) data['COMPLETED_BLOCKS'] = [ Location.from_dict(location_dict=completed_block) for completed_block in data['COMPLETED_BLOCKS'] ] return data
def _deserialise(self, data): json_data = json.loads(data, use_decimal=True) completed_blocks = [Location.from_dict(location_dict=completed_block) for completed_block in json_data.get('COMPLETED_BLOCKS', [])] self.set_metadata(json_data.get('METADATA', {})) self.answer_store = AnswerStore(json_data.get('ANSWERS')) self.completed_blocks = completed_blocks self.collection_metadata = json_data.get('COLLECTION_METADATA', {})
def test_questionnaire_store_removes_completed_location(self): # Given expected = get_basic_input() store = QuestionnaireStore(self.storage) location = Location.from_dict(expected['COMPLETED_BLOCKS'][0]) store.completed_blocks = [location] # When store.remove_completed_blocks(location=location) # Then self.assertEqual(store.completed_blocks, [])
def _deserialise(self, data): json_data = json.loads(data, use_decimal=True) # pylint: disable=maybe-no-member completed_blocks = [ Location.from_dict(location_dict=completed_block) for completed_block in json_data.get('COMPLETED_BLOCKS', []) ] self.metadata = json_data.get('METADATA', {}) self.answer_store.answers = json_data.get('ANSWERS', []) self.completed_blocks = completed_blocks
def test_load_location_from_dict_without_list_item_id(self): location_dict = { "section_id": "some-section", "block_id": "some-block" } location = Location.from_dict(location_dict) self.assertEqual(location.section_id, "some-section") self.assertEqual(location.block_id, "some-block") self.assertEqual(location.list_item_id, None) self.assertEqual(location.list_name, None)
def test_questionnaire_store_loads_json(self): # Given expected = get_basic_input() self.input_data = json.dumps(expected) # When store = QuestionnaireStore(self.storage) # Then self.assertEqual(store.metadata, expected['METADATA']) self.assertEqual(store.answer_store.answers, expected['ANSWERS']) expected_location = expected['COMPLETED_BLOCKS'][0] self.assertEqual(len(store.completed_blocks), 1) self.assertEqual(store.completed_blocks[0], Location.from_dict(location_dict=expected_location))
def test_load_location_from_dict(self): location_dict = { "section_id": "some-section", "block_id": "some-block", "list_name": "people", "list_item_id": "adhjiiw", } location = Location.from_dict(location_dict) self.assertEqual(location.section_id, "some-section") self.assertEqual(location.block_id, "some-block") self.assertEqual(location.list_item_id, "adhjiiw") self.assertEqual(location.list_name, "people")
def test_questionnaire_store_updates_storage(self): # Given expected = get_basic_input() store = QuestionnaireStore(self.storage) store.metadata = expected['METADATA'] store.answer_store.answers = expected['ANSWERS'] store.completed_blocks = [ Location.from_dict(expected['COMPLETED_BLOCKS'][0]) ] # When store.add_or_update() # See setUp - populates self.output_data # Then self.assertEqual(expected, json.loads(self.output_data))
def test_questionnaire_store_ignores_extra_json(self): # Given expected = get_basic_input() expected[ 'NOT_A_LEGAL_TOP_LEVEL_KEY'] = 'woop_woop_thats_the_sound_of_the_police' self.input_data = json.dumps(expected) # When store = QuestionnaireStore(self.storage) # Then self.assertEqual(store.metadata, expected['METADATA']) self.assertEqual(store.answer_store.answers, expected['ANSWERS']) expected_location = expected['COMPLETED_BLOCKS'][0] self.assertEqual(len(store.completed_blocks), 1) self.assertEqual(store.completed_blocks[0], Location.from_dict(location_dict=expected_location))
def test_questionnaire_store_errors_on_invalid_object(self): # Given class NotSerializable(): pass expected = get_basic_input() store = QuestionnaireStore(self.storage) store.metadata = NotSerializable() store.answer_store.answers = expected['ANSWERS'] store.completed_blocks = [ Location.from_dict(expected['COMPLETED_BLOCKS'][0]) ] # When / Then self.assertRaises(TypeError, store.add_or_update)
def test_questionnaire_store_loads_answers_as_dict(self): # Given expected = get_input_answers_dict() self.input_data = json.dumps(expected) # When store = QuestionnaireStore(self.storage, 3) # Then self.assertEqual(store.metadata.copy(), expected['METADATA']) self.assertEqual(store.collection_metadata, expected['COLLECTION_METADATA']) self.assertEqual(store.answer_store, AnswerStore(expected['ANSWERS'])) expected_location = expected['COMPLETED_BLOCKS'][0] self.assertEqual(len(store.completed_blocks), 1) self.assertEqual(store.completed_blocks[0], Location.from_dict(location_dict=expected_location))
def test_questionnaire_store_errors_on_invalid_object(self): # Given class NotSerializable: pass non_serializable_metadata = {'test': NotSerializable()} expected = get_basic_input() store = QuestionnaireStore(self.storage) store.set_metadata(non_serializable_metadata) store.collection_metadata = expected['COLLECTION_METADATA'] store.answer_store = AnswerStore(expected['ANSWERS']) store.completed_blocks = [ Location.from_dict(expected['COMPLETED_BLOCKS'][0]) ] # When / Then self.assertRaises(TypeError, store.add_or_update)
def test_questionnaire_store_deletes(self): # Given expected = get_basic_input() store = QuestionnaireStore(self.storage) store.set_metadata(expected['METADATA']) store.collection_metadata = expected['COLLECTION_METADATA'] store.answer_store.answers = expected['ANSWERS'] store.completed_blocks = [ Location.from_dict(expected['COMPLETED_BLOCKS'][0]) ] # When store.delete() # See setUp - populates self.output_data # Then self.assertEqual(store.completed_blocks, []) self.assertEqual(store.metadata.copy(), {}) self.assertEqual(store.answer_store.count(), 0) self.assertEqual(store.collection_metadata, {})