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, [])
Esempio n. 4
0
 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, {})