Skip to content

Commit 7e6587a

Browse files
authored
Merge branch 'master' into dependabot/pip/requirements/time_tracker_api/jinja2-2.11.3
2 parents 0457623 + dd50e73 commit 7e6587a

File tree

6 files changed

+35
-64
lines changed

6 files changed

+35
-64
lines changed

tests/time_tracker_api/activities/activities_model_test.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,14 @@
88
)
99

1010

11-
@pytest.mark.parametrize(
12-
"activities_ids_list,expected_result",
13-
[
14-
(["id1"], "c.id IN ('id1')"),
15-
(["id1", "id2"], "c.id IN ('id1', 'id2')"),
16-
(["id1", "id2", "id3", "id4"], "c.id IN ('id1', 'id2', 'id3', 'id4')"),
17-
],
18-
)
19-
def test_create_sql_in_condition(
20-
activity_repository: ActivityCosmosDBRepository,
21-
activities_ids_list,
22-
expected_result,
23-
):
24-
result = activity_repository.create_sql_in_condition(activities_ids_list)
25-
assert expected_result == result
26-
27-
2811
@patch(
2912
'time_tracker_api.activities.activities_model.ActivityCosmosDBRepository.create_sql_condition_for_visibility'
3013
)
31-
@patch(
32-
'time_tracker_api.activities.activities_model.ActivityCosmosDBRepository.create_sql_in_condition'
33-
)
3414
@patch(
3515
'time_tracker_api.activities.activities_model.ActivityCosmosDBRepository.find_partition_key_value'
3616
)
3717
def test_find_all_with_id_in_list(
3818
find_partition_key_value_mock,
39-
create_sql_in_condition_mock,
4019
create_sql_condition_for_visibility_mock,
4120
event_context: EventContext,
4221
activity_repository: ActivityCosmosDBRepository,
@@ -52,10 +31,9 @@ def test_find_all_with_id_in_list(
5231
activity_repository.container = Mock()
5332
activity_repository.container.query_items = query_items_mock
5433

55-
result = activity_repository.find_all_with_id_in_list(event_context, [])
34+
result = activity_repository.find_all_with_id_in_list(event_context, [expected_item])
5635

5736
create_sql_condition_for_visibility_mock.assert_called_once()
58-
create_sql_in_condition_mock.assert_called_once()
5937
find_partition_key_value_mock.assert_called_once()
6038
query_items_mock.assert_called_once()
6139

tests/time_tracker_api/projects/projects_model_test.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,14 @@
88
)
99

1010

11-
@pytest.mark.parametrize(
12-
"customer_ids_list,expected_result",
13-
[
14-
(["id1"], "c.customer_id IN ('id1')"),
15-
(["id1", "id2"], "c.customer_id IN ('id1', 'id2')"),
16-
(["id1", "id2", "id3", "id4"], "c.customer_id IN ('id1', 'id2', 'id3', 'id4')"),
17-
],
18-
)
19-
def test_create_sql_in_condition(
20-
project_repository: ProjectCosmosDBRepository,
21-
customer_ids_list,
22-
expected_result,
23-
):
24-
result = project_repository.create_sql_customer_id_in_condition(customer_ids_list)
25-
assert expected_result == result
26-
27-
2811
@patch(
2912
'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.create_sql_condition_for_visibility'
3013
)
31-
@patch(
32-
'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.create_sql_customer_id_in_condition'
33-
)
3414
@patch(
3515
'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.find_partition_key_value'
3616
)
3717
def test_find_all_with_customer_id_in_list(
3818
find_partition_key_value_mock,
39-
create_sql_customer_id_in_condition_mock,
4019
create_sql_condition_for_visibility_mock,
4120
event_context: EventContext,
4221
project_repository: ProjectCosmosDBRepository,
@@ -53,10 +32,9 @@ def test_find_all_with_customer_id_in_list(
5332
project_repository.container = Mock()
5433
project_repository.container.query_items = query_items_mock
5534

56-
result = project_repository.find_all_with_customer_id_in_list(event_context, [])
35+
result = project_repository.find_all_with_customer_id_in_list(event_context, [expected_item])
5736

5837
create_sql_condition_for_visibility_mock.assert_called_once()
59-
create_sql_customer_id_in_condition_mock.assert_called_once()
6038
find_partition_key_value_mock.assert_called_once()
6139
query_items_mock.assert_called_once()
6240

tests/utils/repository_test.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from unittest.mock import patch
2-
from utils.repository import convert_list_to_tuple_string
2+
from utils.repository import convert_list_to_tuple_string, create_sql_in_condition
33
import pytest
44

55

@@ -34,3 +34,23 @@ def test_convert_list_to_tuple_string_should_success(
3434
result = convert_list_to_tuple_string(ids_list)
3535

3636
assert expected_result == result
37+
38+
39+
@pytest.mark.parametrize(
40+
"field,values,expected_result",
41+
[
42+
("customer_id", ["id1"], "c.customer_id IN ('id1')"),
43+
("customer_id", ["id1", "id2"], "c.customer_id IN ('id1', 'id2')"),
44+
("customer_id", ["id1", "id2", "id3", "id4"], "c.customer_id IN ('id1', 'id2', 'id3', 'id4')"),
45+
("id", ["id1"], "c.id IN ('id1')"),
46+
("id", ["id1", "id4"], "c.id IN ('id1', 'id4')"),
47+
("id", ["id1", "id2", "id3", "id4"], "c.id IN ('id1', 'id2', 'id3', 'id4')"),
48+
],
49+
)
50+
def test_create_sql_in_condition(
51+
field,
52+
values,
53+
expected_result,
54+
):
55+
result = create_sql_in_condition(field, values)
56+
assert expected_result == result

time_tracker_api/activities/activities_model.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from time_tracker_api.database import CRUDDao, APICosmosDBDao
1111
from typing import List, Callable
1212
from commons.data_access_layer.database import EventContext
13-
from utils.repository import convert_list_to_tuple_string
13+
from utils.repository import convert_list_to_tuple_string, create_sql_in_condition
1414

1515

1616
class ActivityDao(CRUDDao):
@@ -55,25 +55,20 @@ def __init__(self):
5555
mapper=ActivityCosmosDBModel,
5656
)
5757

58-
def create_sql_in_condition(self, activity_ids):
59-
id_values = convert_list_to_tuple_string(activity_ids)
60-
61-
return "c.id IN {value_condition}".format(value_condition=id_values)
62-
6358
def find_all_with_id_in_list(
6459
self,
6560
event_context: EventContext,
6661
activity_ids: List[str],
6762
visible_only=True,
6863
mapper: Callable = None,
69-
):
64+
):
7065
visibility = self.create_sql_condition_for_visibility(visible_only)
7166
query_str = """
7267
SELECT * FROM c
7368
WHERE {condition}
7469
{visibility_condition}
7570
""".format(
76-
condition=self.create_sql_in_condition(activity_ids),
71+
condition=create_sql_in_condition("id", activity_ids),
7772
visibility_condition=visibility,
7873
)
7974

time_tracker_api/projects/projects_model.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from time_tracker_api.database import CRUDDao, APICosmosDBDao
99
from typing import List, Callable
1010
from commons.data_access_layer.database import EventContext
11-
from utils.repository import convert_list_to_tuple_string
11+
from utils.repository import convert_list_to_tuple_string, create_sql_in_condition
1212
from time_tracker_api.customers.customers_model import (
1313
create_dao as customers_create_dao,
1414
)
@@ -65,26 +65,21 @@ def __init__(self):
6565
partition_key_attribute='tenant_id',
6666
mapper=ProjectCosmosDBModel,
6767
)
68-
69-
def create_sql_customer_id_in_condition(self, customer_ids_list):
70-
id_values = convert_list_to_tuple_string(customer_ids_list)
71-
72-
return "c.customer_id IN {value_condition}".format(value_condition=id_values)
73-
68+
7469
def find_all_with_customer_id_in_list(
7570
self,
7671
event_context: EventContext,
7772
customer_ids_list: List[str],
7873
visible_only=True,
79-
mapper: Callable = None,
74+
mapper: Callable = None,
8075
):
8176
visibility = self.create_sql_condition_for_visibility(visible_only)
8277
query_str = """
8378
SELECT * FROM c
8479
WHERE {condition}
8580
{visibility_condition}
8681
""".format(
87-
condition=self.create_sql_customer_id_in_condition(customer_ids_list),
82+
condition=create_sql_in_condition("customer_id", customer_ids_list),
8883
visibility_condition=visibility,
8984
)
9085

utils/repository.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ def convert_list_to_tuple_string(ids_list):
77
else str(tuple(ids_list))
88
)
99
return result
10+
11+
def create_sql_in_condition(field, values):
12+
tuple_string = convert_list_to_tuple_string(values)
13+
14+
return "c.{field} IN {list}".format(field=field, list=tuple_string)

0 commit comments

Comments
 (0)