@@ -314,4 +314,119 @@ public function testODataClientCursorPageSizeOf20ShouldReturnAllEntities()
314314
315315 $ this ->assertEquals ($ pageSize , count ($ data ->toArray ()));
316316 }
317+
318+ public function testODataClientWhereContainsRealData ()
319+ {
320+ $ odataClient = $ this ->createODataClient ();
321+
322+ // Test whereContains - should find airlines with "Airline" in their name
323+ $ airlines = $ odataClient ->from ('Airlines ' )
324+ ->whereContains ('Name ' , 'Airline ' )
325+ ->get ();
326+
327+ $ this ->assertTrue (is_array ($ airlines ->toArray ()));
328+ $ this ->assertGreaterThan (0 , $ airlines ->count ());
329+
330+ // Verify all results contain "Airline" in the name
331+ foreach ($ airlines as $ airline ) {
332+ $ this ->assertStringContainsString ('Airline ' , $ airline ->Name );
333+ }
334+
335+ // Should find American Airlines, Shanghai Airline, and Austrian Airlines
336+ $ airlineCodes = $ airlines ->pluck ('AirlineCode ' )->toArray ();
337+ $ this ->assertContains ('AA ' , $ airlineCodes ); // American Airlines
338+ $ this ->assertContains ('FM ' , $ airlineCodes ); // Shanghai Airline
339+ $ this ->assertContains ('OS ' , $ airlineCodes ); // Austrian Airlines
340+ }
341+
342+ public function testODataClientOrWhereContainsRealData ()
343+ {
344+ $ odataClient = $ this ->createODataClient ();
345+
346+ // Test orWhereContains - find Air France OR names containing "China"
347+ $ airlines = $ odataClient ->from ('Airlines ' )
348+ ->where ('AirlineCode ' , 'AF ' )
349+ ->orWhereContains ('Name ' , 'China ' )
350+ ->get ();
351+
352+ $ this ->assertTrue (is_array ($ airlines ->toArray ()));
353+ $ this ->assertGreaterThanOrEqual (2 , $ airlines ->count ()); // At least Air France and China Eastern
354+
355+ $ airlineCodes = $ airlines ->pluck ('AirlineCode ' )->toArray ();
356+ $ this ->assertContains ('AF ' , $ airlineCodes ); // Air France
357+ $ this ->assertContains ('MU ' , $ airlineCodes ); // China Eastern Airlines
358+ }
359+
360+ public function testODataClientWhereNotContainsRealData ()
361+ {
362+ $ odataClient = $ this ->createODataClient ();
363+
364+ // Test whereNotContains - should find airlines WITHOUT "Airline" in their name
365+ $ airlines = $ odataClient ->from ('Airlines ' )
366+ ->whereNotContains ('Name ' , 'Airline ' )
367+ ->get ();
368+
369+ $ this ->assertTrue (is_array ($ airlines ->toArray ()));
370+ $ this ->assertGreaterThan (0 , $ airlines ->count ());
371+
372+ // Verify none of the results contain "Airline" in the name
373+ foreach ($ airlines as $ airline ) {
374+ $ this ->assertStringNotContainsString ('Airline ' , $ airline ->Name );
375+ }
376+
377+ // Should find Air France, Alitalia, Air Canada, and other non-Airline named carriers
378+ $ airlineCodes = $ airlines ->pluck ('AirlineCode ' )->toArray ();
379+ $ this ->assertContains ('AF ' , $ airlineCodes ); // Air France
380+ $ this ->assertContains ('AZ ' , $ airlineCodes ); // Alitalia
381+ $ this ->assertContains ('AC ' , $ airlineCodes ); // Air Canada
382+ $ this ->assertNotContains ('AA ' , $ airlineCodes ); // American Airlines should NOT be included
383+ $ this ->assertNotContains ('FM ' , $ airlineCodes ); // Shanghai Airline should NOT be included
384+ }
385+
386+ public function testODataClientOrWhereNotContainsRealData ()
387+ {
388+ $ odataClient = $ this ->createODataClient ();
389+
390+ // Test orWhereNotContains - find Turkish Airlines OR names not containing "Air"
391+ $ airlines = $ odataClient ->from ('Airlines ' )
392+ ->where ('AirlineCode ' , 'TK ' )
393+ ->orWhereNotContains ('Name ' , 'Air ' )
394+ ->get ();
395+
396+ $ this ->assertTrue (is_array ($ airlines ->toArray ()));
397+ $ this ->assertGreaterThan (0 , $ airlines ->count ());
398+
399+ $ airlineCodes = $ airlines ->pluck ('AirlineCode ' )->toArray ();
400+ $ this ->assertContains ('TK ' , $ airlineCodes ); // Turkish Airlines (matched by first condition)
401+ $ this ->assertContains ('AZ ' , $ airlineCodes ); // Alitalia (no "Air" in name)
402+ // Note: Results may vary based on the current dataset
403+ }
404+
405+ public function testODataClientCombinedContainsNotContainsRealData ()
406+ {
407+ $ odataClient = $ this ->createODataClient ();
408+
409+ // Test combined contains/notContains - names with "Air" but not "Airline"
410+ $ airlines = $ odataClient ->from ('Airlines ' )
411+ ->whereContains ('Name ' , 'Air ' )
412+ ->whereNotContains ('Name ' , 'Airline ' )
413+ ->get ();
414+
415+ $ this ->assertTrue (is_array ($ airlines ->toArray ()));
416+ $ this ->assertGreaterThan (0 , $ airlines ->count ());
417+
418+ // Should find Air France, Air Canada, Alitalia
419+ $ airlineNames = $ airlines ->pluck ('Name ' )->toArray ();
420+ foreach ($ airlineNames as $ name ) {
421+ $ this ->assertStringContainsString ('Air ' , $ name );
422+ $ this ->assertStringNotContainsString ('Airline ' , $ name );
423+ }
424+
425+ $ airlineCodes = $ airlines ->pluck ('AirlineCode ' )->toArray ();
426+ $ this ->assertContains ('AF ' , $ airlineCodes ); // Air France
427+ $ this ->assertContains ('AC ' , $ airlineCodes ); // Air Canada
428+ $ this ->assertNotContains ('AA ' , $ airlineCodes ); // American Airlines (contains both)
429+ $ this ->assertNotContains ('OS ' , $ airlineCodes ); // Austrian Airlines (contains both)
430+ $ this ->assertNotContains ('FM ' , $ airlineCodes ); // Shanghai Airline (contains both)
431+ }
317432}
0 commit comments