diff --git a/backdrop/core/data_set.py b/backdrop/core/data_set.py index 60c0931e..b0bcadad 100644 --- a/backdrop/core/data_set.py +++ b/backdrop/core/data_set.py @@ -84,17 +84,17 @@ def store(self, records): # doesn't change data, no need to return records errors += validate_record_schema(record, self.config['schema']) + # Parse timestamps + records, timestamp_errors = separate_errors_and_records( + map(parse_timestamps, records)) + errors += timestamp_errors + # Add auto-id keys records, auto_id_errors = add_auto_ids( records, self.config.get('auto_ids', None)) errors += auto_id_errors - # Parse timestamps - records, timestamp_errors = separate_errors_and_records( - map(parse_timestamps, records)) - errors += timestamp_errors - # Custom record validations # doesn't change data, no need to return records errors += filter(None, map(validate_record, records)) diff --git a/tests/core/test_data_set.py b/tests/core/test_data_set.py index 13bad40e..8fa2b4a6 100644 --- a/tests/core/test_data_set.py +++ b/tests/core/test_data_set.py @@ -219,6 +219,15 @@ def test_store_does_not_get_auto_id_type_error_due_to_datetime( assert_that(add_period_keys_patch.called, is_(False)) assert_that(save_record_patch.called, is_(False)) + def test_store_parses_timestamp_to_utc_before_generating_auto_id(self): + self.setup_config({'auto_ids': ['_timestamp']}) + self.data_set.store([{"_timestamp": "2012-12-12T00:00:00Z"}]) + + self.mock_storage.save_record.assert_called_with( + 'test_data_set', match(has_entry( + '_id', + 'MjAxMi0xMi0xMiAwMDowMDowMCswMDowMA=='))) + class TestDataSet_execute_query(BaseDataSetTest):