From 367b57e4d1b5f7f79a57388c16b838f6915a8099 Mon Sep 17 00:00:00 2001 From: Guido Quezada Date: Thu, 17 Dec 2020 17:45:03 -0500 Subject: [PATCH 1/3] TT-69 fix: Delete overlap hours --- time_tracker_api/time_entries/time_entries_repository.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/time_tracker_api/time_entries/time_entries_repository.py b/time_tracker_api/time_entries/time_entries_repository.py index 2a348964..75179aa2 100644 --- a/time_tracker_api/time_entries/time_entries_repository.py +++ b/time_tracker_api/time_entries/time_entries_repository.py @@ -181,7 +181,8 @@ def on_create(self, new_item_data: dict, event_context: EventContext): def on_update(self, updated_item_data: dict, event_context: EventContext): CosmosDBRepository.on_update(self, updated_item_data, event_context) - self.validate_data(updated_item_data, event_context) + if not 'deleted' in updated_item_data: + self.validate_data(updated_item_data, event_context) self.replace_empty_value_per_none(updated_item_data) def find_interception_with_date_range( From d5482a619786f2bd04cfefc42e67e45fc9545208 Mon Sep 17 00:00:00 2001 From: Guido Quezada Date: Fri, 18 Dec 2020 11:57:14 -0500 Subject: [PATCH 2/3] TT-69 fix: add tests --- .../time_entries/time_entries_model_test.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/time_tracker_api/time_entries/time_entries_model_test.py b/tests/time_tracker_api/time_entries/time_entries_model_test.py index dd58e0a9..e551b6d0 100644 --- a/tests/time_tracker_api/time_entries/time_entries_model_test.py +++ b/tests/time_tracker_api/time_entries/time_entries_model_test.py @@ -1,3 +1,4 @@ +from unittest.mock import Mock, patch import pytest from faker import Faker @@ -231,3 +232,37 @@ def test_find_running_should_not_find_any_item( time_entry_repository.find_running(tenant_id, owner_id) except Exception as e: assert type(e) is StopIteration + + +@patch( + 'commons.data_access_layer.cosmos_db.CosmosDBRepository.on_update', + new_callable=Mock, +) +def test_updated_item_with_deleted_key_should_not_call_validate_data( + on_update_mock, + event_context: EventContext, + time_entry_repository: TimeEntryCosmosDBRepository, +): + + time_entry_repository.validate_data = Mock() + time_entry_repository.replace_empty_value_per_none = Mock() + time_entry_repository.on_update({'deleted': '01234'}, event_context) + on_update_mock.assert_called_once() + time_entry_repository.validate_data.assert_not_called() + + +@patch( + 'commons.data_access_layer.cosmos_db.CosmosDBRepository.on_update', + new_callable=Mock, +) +def test_updated_item_without_deleted_key_should_call_validate_data( + on_update_mock, + event_context: EventContext, + time_entry_repository: TimeEntryCosmosDBRepository, +): + + time_entry_repository.validate_data = Mock() + time_entry_repository.replace_empty_value_per_none = Mock() + time_entry_repository.on_update({}, event_context) + on_update_mock.assert_called_once() + time_entry_repository.validate_data.assert_called_once() From e150b7df05c21f7917dd313cb70fdc556e9a3367 Mon Sep 17 00:00:00 2001 From: Guido Quezada Date: Fri, 18 Dec 2020 13:28:03 -0500 Subject: [PATCH 3/3] TT-69 fix: refactor condition --- time_tracker_api/time_entries/time_entries_repository.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/time_tracker_api/time_entries/time_entries_repository.py b/time_tracker_api/time_entries/time_entries_repository.py index 75179aa2..41883bb1 100644 --- a/time_tracker_api/time_entries/time_entries_repository.py +++ b/time_tracker_api/time_entries/time_entries_repository.py @@ -181,7 +181,8 @@ def on_create(self, new_item_data: dict, event_context: EventContext): def on_update(self, updated_item_data: dict, event_context: EventContext): CosmosDBRepository.on_update(self, updated_item_data, event_context) - if not 'deleted' in updated_item_data: + is_update_to_delete = 'deleted' in updated_item_data + if not is_update_to_delete: self.validate_data(updated_item_data, event_context) self.replace_empty_value_per_none(updated_item_data)