@@ -94,7 +94,7 @@ def test_any(self):
9494
9595 def test_sort (self ):
9696 self .assertEqual (str (entity .a .desc ()), 'a descending' )
97- self .assertNotEqual (str (entity .a .desc ), 'a descending ' )
97+ self .assertEqual (str (entity .a .desc ), 'a.desc ' )
9898 self .assertEqual (str (entity .a .b .asc ()), 'a.b ascending' )
9999
100100 def test_call (self ):
@@ -138,30 +138,59 @@ def test_id_remap_in(self):
138138 'Project where project_schema.id in ("{}")' .format (schema ['id' ])
139139 )
140140
141- def test_query_remap (self ):
141+ def test_id_remap_in_multiple (self ):
142142 schema = self .session .ProjectSchema .first ()
143- query = self .session .ProjectSchema .where (id = schema ['id' ])
144143 self .assertEqual (
145- str (self .session .Project .where (entity .project_schema == query )),
146- 'Project where project_schema.id is "{}"' .format (schema ['id' ]),
147- )
148- self .assertEqual (
149- str (self .session .Project .where (project_schema = query )),
150- 'Project where project_schema.id is "{}"' .format (schema ['id' ]),
144+ str (self .session .Project .where (entity .project_schema .in_ (schema , schema ))),
145+ 'Project where project_schema.id in ("{s}", "{s}")' .format (s = schema ['id' ])
151146 )
152147
153- def test_subquery_in (self ):
154- schema = self .session .ProjectSchema .first ()
155- query = self .session .ProjectSchema .where (id = schema ['id' ])
148+
149+ class TestQueryComparison (unittest .TestCase ):
150+ def setUp (self ):
151+ self .session = FTrackQuery (debug = True )
152+
153+ def test_in (self ):
154+ query = self .session .ProjectSchema .where (name = 'My Schema' )
156155 self .assertEqual (
157156 str (self .session .Project .where (entity .project_schema .in_ (query ))),
158- 'Project where project_schema.id in (select id from ProjectSchema where id is "{} ")' . format ( schema [ 'id' ]) ,
157+ 'Project where project_schema.id in (select id from ProjectSchema where name is "My Schema ")' ,
159158 )
160159 with self .assertRaises (ValueError ):
161- self .assertEqual (
162- str (self .session .Project .where (entity .project_schema .in_ (query , query ))),
163- 'Project where project_schema.id in ("{id}", "{id}")' .format (id = schema ['id' ]),
164- )
160+ str (self .session .Project .where (entity .project_schema .in_ (query , query )))
161+
162+ def test_has_simple (self ):
163+ query = self .session .ProjectSchema .where (name = 'My Schema' )
164+ self .assertEqual (
165+ str (self .session .Project .where (entity .project_schema .has (query ))),
166+ 'Project where project_schema has (name is "My Schema")' ,
167+ )
168+
169+ def test_has_complex (self ):
170+ query = self .session .ProjectSchema .where (~ entity .project .has (name = 'Invalid Project' ), name = 'My Schema' )
171+ self .assertEqual (
172+ str (self .session .Project .where (entity .project_schema .has (query ))),
173+ 'Project where project_schema has (not project has (name is "Invalid Project") and name is "My Schema")' ,
174+ )
175+
176+ def test_has_multiple (self ):
177+ query1 = self .session .ProjectSchema .where (~ entity .project .has (name = 'Invalid Project' ))
178+ query2 = self .session .ProjectSchema .where (name = 'My Schema' )
179+ self .assertEqual (
180+ str (self .session .Project .where (entity .project_schema .has (query1 , query2 ))),
181+ 'Project where project_schema has (not project has (name is "Invalid Project") and name is "My Schema")' ,
182+ )
183+ self .assertEqual (
184+ str (self .session .Project .where (entity .project_schema .any (query1 , query2 ))),
185+ 'Project where project_schema any (not project has (name is "Invalid Project") and name is "My Schema")' ,
186+ )
187+
188+ def test_equals (self ):
189+ with self .assertRaises (NotImplementedError ):
190+ entity .value == self .session .ProjectSchema .where (name = 'My Schema' )
191+ with self .assertRaises (NotImplementedError ):
192+ entity .value != self .session .ProjectSchema .where (name = 'My Schema' )
193+
165194
166195
167196if __name__ == '__main__' :
0 commit comments