1+ from unittest .mock import Mock , patch
2+ import pytest
3+
4+ from commons .data_access_layer .database import EventContext
5+ from time_tracker_api .projects .projects_model import (
6+ ProjectCosmosDBRepository ,
7+ ProjectCosmosDBModel ,
8+ )
9+
10+
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+
28+ @patch (
29+ 'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.create_sql_condition_for_visibility'
30+ )
31+ @patch (
32+ 'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.create_sql_customer_id_in_condition'
33+ )
34+ @patch (
35+ 'time_tracker_api.projects.projects_model.ProjectCosmosDBRepository.find_partition_key_value'
36+ )
37+ def test_find_all_with_customer_id_in_list (
38+ find_partition_key_value_mock ,
39+ create_sql_customer_id_in_condition_mock ,
40+ create_sql_condition_for_visibility_mock ,
41+ event_context : EventContext ,
42+ project_repository : ProjectCosmosDBRepository ,
43+ ):
44+ expected_item = {
45+ 'customer_id' : 'id1' ,
46+ 'name' : 'testing' ,
47+ 'description' : 'do some testing' ,
48+ 'project_type_id' : "id2" ,
49+ 'tenant_id' : 'tenantid1' ,
50+ }
51+
52+ query_items_mock = Mock (return_value = [expected_item ])
53+ project_repository .container = Mock ()
54+ project_repository .container .query_items = query_items_mock
55+
56+ result = project_repository .find_all_with_customer_id_in_list (event_context , [])
57+
58+ create_sql_condition_for_visibility_mock .assert_called_once ()
59+ create_sql_customer_id_in_condition_mock .assert_called_once ()
60+ find_partition_key_value_mock .assert_called_once ()
61+ query_items_mock .assert_called_once ()
62+
63+ assert len (result ) == 1
64+ project = result [0 ]
65+ assert isinstance (project , ProjectCosmosDBModel )
66+ assert project .__dict__ == expected_item
0 commit comments