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