@@ -90,6 +90,88 @@ def test_add_sql_where_equal_condition_with_None_should_not_update_lists():
9090 assert query_builder .parameters == []
9191
9292
93+ @pytest .mark .parametrize (
94+ "data,expected_where_list,expected_params" ,
95+ [
96+ ([], [], []),
97+ (
98+ [
99+ {
100+ "field_name" : "end_date" ,
101+ "compare_field_name" : "start_date" ,
102+ "compare_field_value" : "nomatter" ,
103+ },
104+ {
105+ "field_name" : "start_date" ,
106+ "compare_field_name" : "end_date" ,
107+ "compare_field_value" : "nomatter" ,
108+ },
109+ ],
110+ [
111+ "c.end_date != @start_date" ,
112+ "c.start_date != @end_date" ,
113+ ],
114+ [
115+ {'name' : '@start_date' , 'value' : 'nomatter' },
116+ {'name' : '@end_date' , 'value' : 'nomatter' },
117+ ],
118+ ),
119+ ],
120+ )
121+ def test_add_sql_where_not_equal_condition_should_update_where_conditions_list (
122+ data , expected_where_list , expected_params
123+ ):
124+ query_builder = CosmosDBQueryBuilder ().add_sql_where_not_equal_condition (
125+ data
126+ )
127+
128+ assert len (query_builder .where_conditions ) == len (expected_where_list )
129+ assert len (query_builder .parameters ) == len (expected_params )
130+ assert query_builder .where_conditions == expected_where_list
131+ assert query_builder .parameters == expected_params
132+
133+
134+ def test_add_sql_where_not_equal_condition_with_none_data_should_not_update_lists ():
135+ query_builder = CosmosDBQueryBuilder ().add_sql_where_not_equal_condition (
136+ None
137+ )
138+
139+ assert len (query_builder .where_conditions ) == 0
140+ assert len (query_builder .parameters ) == 0
141+ assert query_builder .parameters == []
142+ assert query_builder .where_conditions == []
143+
144+
145+ @pytest .mark .parametrize (
146+ "data,expected_params" ,
147+ [
148+ (
149+ [
150+ {
151+ "field_name" : "end_date" ,
152+ "compare_field_name" : "start_date" ,
153+ "compare_field_value" : "nomatter" ,
154+ }
155+ ],
156+ [
157+ {'name' : '@start_date' , 'value' : 'nomatter' },
158+ ],
159+ )
160+ ],
161+ )
162+ def test_add_sql_where_not_equal_conditions_should_not_update_parameters_if_already_exists (
163+ data , expected_params
164+ ):
165+ query_builder = CosmosDBQueryBuilder ()
166+ query_builder .parameters = [
167+ {'name' : '@start_date' , 'value' : 'nomatter' },
168+ ]
169+
170+ query_builder .add_sql_where_not_equal_condition (data )
171+
172+ assert len (query_builder .parameters ) == len (expected_params )
173+
174+
93175@pytest .mark .parametrize (
94176 "visibility_bool,expected_where_list" ,
95177 [(True , ['NOT IS_DEFINED(c.deleted)' ]), (False , [])],
@@ -331,3 +413,30 @@ def test_add_sql_not_in_condition(
331413 )
332414 assert len (query_builder .where_conditions ) == len (expected_not_in_list )
333415 assert query_builder .where_conditions == expected_not_in_list
416+
417+
418+ def test_add_sql_non_existent_attribute_condition_should_update_where_conditions_list ():
419+ query_builder = (
420+ CosmosDBQueryBuilder ().add_sql_non_existent_attribute_condition ('name' )
421+ )
422+ expected_condition = "(NOT IS_DEFINED(c.name) OR c.name = null)"
423+
424+ assert len (query_builder .where_conditions ) == 1
425+ assert query_builder .where_conditions [0 ].strip () == expected_condition
426+
427+
428+ @pytest .mark .parametrize (
429+ "expected_condition,expected_params" ,
430+ [("c.id!=@ignore_id" , {"name" : "@ignore_id" , "value" : "nomatter" })],
431+ )
432+ def test_add_sql_ignore_id_condition_should_update_where_conditions_list (
433+ expected_condition , expected_params
434+ ):
435+ query_builder = CosmosDBQueryBuilder ().add_sql_ignore_id_condition (
436+ 'nomatter'
437+ )
438+
439+ assert len (query_builder .where_conditions ) == 1
440+ assert len (query_builder .parameters ) == 1
441+ assert query_builder .where_conditions [0 ].strip () == expected_condition
442+ assert query_builder .parameters [0 ] == expected_params
0 commit comments