Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fix: TT-219 automatic code formating
  • Loading branch information
Pablo authored and Pablo committed Apr 28, 2021
commit c1879abe708cda2b1aa005c4ba84951395765188
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,6 @@ def test_find_all_v2(
time_entry_repository.container = Mock()
time_entry_repository.container.query_items = query_items_mock

time_entry_repository.add_complementary_info = Mock()
time_entry_repository.add_complementary_info = query_items_mock

result = time_entry_repository.find_all(
Expand Down Expand Up @@ -371,7 +370,9 @@ def test_get_last_entry(
time_entry_repository.container = Mock()
time_entry_repository.container.query_items = query_items_mock

time_entry = time_entry_repository.get_last_entry('id1', ['id1'], event_context)
time_entry = time_entry_repository.get_last_entry(
'id1', ['id1'], event_context
)

find_partition_key_value_mock.assert_called_once()
assert isinstance(time_entry, TimeEntryCosmosDBModel)
Expand Down
93 changes: 91 additions & 2 deletions tests/time_tracker_api/time_entries/time_entries_namespace_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,95 @@ def test_get_time_entry_should_succeed_with_valid_id(
'current_user_is_tester, expected_user_ids',
[
(True, ['id1', 'id1']),
],
)
@patch(
'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.get_azure_app_configuration_client'
)
@patch(
'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
)
def test_get_time_entries_by_type_of_user_when_is_user_tester(
is_toggle_enabled_for_user_mock,
get_azure_app_configuration_client_mock,
get_test_user_ids_mock,
is_test_user_mock,
client: FlaskClient,
valid_header: dict,
time_entries_dao,
current_user_is_tester,
expected_user_ids,
):
is_toggle_enabled_for_user_mock.return_value = True
test_user_id = "id1"
non_test_user_id = "id2"
te1 = TimeEntryCosmosDBModel(
{
"id": '1',
"project_id": "1",
"owner_id": test_user_id,
"tenant_id": '1',
"start_date": "",
}
)
te2 = TimeEntryCosmosDBModel(
{
"id": '2',
"project_id": "2",
"owner_id": test_user_id,
"tenant_id": '2',
"start_date": "",
}
)

find_all_mock = Mock()
find_all_mock.return_value = [te1, te2]

time_entries_dao.repository.find_all = find_all_mock

is_test_user_mock.return_value = current_user_is_tester

response = client.get(
"/time-entries?user_id=*", headers=valid_header, follow_redirects=True
)

get_test_user_ids_mock.assert_not_called()
find_all_mock.assert_called()

expected_user_ids_in_time_entries = expected_user_ids
actual_user_ids_in_time_entries = [
time_entry["owner_id"] for time_entry in json.loads(response.data)
]
assert expected_user_ids_in_time_entries == actual_user_ids_in_time_entries


@patch(
'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.create_event_context',
Mock(),
)
@patch(
'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.build_custom_query',
Mock(),
)
@patch(
'time_tracker_api.time_entries.time_entries_dao.TimeEntriesCosmosDBDao.handle_date_filter_args',
Mock(),
)
@patch(
'time_tracker_api.time_entries.time_entries_repository.TimeEntryCosmosDBRepository.create_sql_date_range_filter',
Mock(),
)
@patch(
'commons.data_access_layer.cosmos_db.CosmosDBRepository.generate_params',
Mock(),
)
@patch('msal.ConfidentialClientApplication', Mock())
@patch('utils.azure_users.AzureConnection.get_token', Mock())
@patch('utils.azure_users.AzureConnection.is_test_user')
@patch('utils.azure_users.AzureConnection.get_test_user_ids')
@pytest.mark.parametrize(
'current_user_is_tester, expected_user_ids',
[
(False, ['id1', 'id1']),
],
)
Expand All @@ -239,7 +328,7 @@ def test_get_time_entry_should_succeed_with_valid_id(
@patch(
'commons.feature_toggles.feature_toggle_manager.FeatureToggleManager.is_toggle_enabled_for_user'
)
def test_get_time_entries_by_type_of_user(
def test_get_time_entries_by_type_of_user_when_is_not_user_tester(
is_toggle_enabled_for_user_mock,
get_azure_app_configuration_client_mock,
get_test_user_ids_mock,
Expand Down Expand Up @@ -284,7 +373,7 @@ def test_get_time_entries_by_type_of_user(
"/time-entries?user_id=*", headers=valid_header, follow_redirects=True
)

is_test_user_mock.assert_called()
get_test_user_ids_mock.assert_called()
find_all_mock.assert_called()

expected_user_ids_in_time_entries = expected_user_ids
Expand Down
17 changes: 11 additions & 6 deletions time_tracker_api/time_entries/time_entries_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
)

from utils.time import current_datetime_str
from utils.repository import convert_list_to_tuple_string

from utils.extend_model import (
add_project_info_to_time_entries,
Expand Down Expand Up @@ -290,9 +291,9 @@ def find_all(

def create_sql_test_users_exclusion_condition(self, test_user_ids):
if test_user_ids != None:
return (
" AND c.owner_id NOT IN ('" + "','".join(test_user_ids) + "') "
)
tuple_string = convert_list_to_tuple_string(test_user_ids)
return "AND c.owner_id NOT IN {list}".format(list=tuple_string)

return ""

def get_last_entry(
Expand Down Expand Up @@ -321,12 +322,16 @@ def get_last_entry(
function_mapper = self.get_mapper_or_dict(mapper)
return function_mapper(next(result))


def update_last_entry(
self, owner_id: str, start_date: str, id_running_entry: str, event_context: EventContext
self,
owner_id: str,
start_date: str,
id_running_entry: str,
event_context: EventContext,
):
last_entry = self.get_last_entry(
owner_id, id_running_entry, event_context)
owner_id, id_running_entry, event_context
)
end_date = str_to_datetime(last_entry.end_date)
_start_date = str_to_datetime(start_date)

Expand Down