Skip to content

Commit 9fa9659

Browse files
Copilotxperiandri
andauthored
Add paired case-sensitive/case-insensitive tests to ObjectListFilter test files
Co-authored-by: xperiandri <2365592+xperiandri@users.noreply.github.com>
1 parent c3eccde commit 9fa9659

2 files changed

Lines changed: 54 additions & 3 deletions

File tree

tests/FSharp.Data.GraphQL.Tests/ObjectListFilterLinqGenerateTests.fs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,14 @@ let ``ObjectListFilter works with StartsWith operator for ValidStringStruct`` ()
196196
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
197197
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE STARTSWITH(root["validStringStruct"], "J")"""
198198

199+
[<Fact>]
200+
let ``ObjectListFilter works with StartsWith case insensitive operator for ValidStringStruct`` () =
201+
let queryable = container.GetItemLinqQueryable<FakeEntity> ()
202+
let filter = StartsWith ({ FieldName = "validStringStruct"; Value = "J" }, StringComparer.OrdinalIgnoreCase)
203+
let filterQuery = queryable.Apply (filter, filterOptions)
204+
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
205+
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE STARTSWITH(root["validStringStruct"], "J", true)"""
206+
199207
[<Fact>]
200208
let ``ObjectListFilter works with EndsWith operator for ValidStringStruct`` () =
201209
let queryable = container.GetItemLinqQueryable<FakeEntity> ()
@@ -204,6 +212,14 @@ let ``ObjectListFilter works with EndsWith operator for ValidStringStruct`` () =
204212
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
205213
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE ENDSWITH(root["validStringStruct"], "n")"""
206214

215+
[<Fact>]
216+
let ``ObjectListFilter works with EndsWith case insensitive operator for ValidStringStruct`` () =
217+
let queryable = container.GetItemLinqQueryable<FakeEntity> ()
218+
let filter = EndsWith ({ FieldName = "validStringStruct"; Value = "n" }, StringComparer.OrdinalIgnoreCase)
219+
let filterQuery = queryable.Apply (filter, filterOptions)
220+
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
221+
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE ENDSWITH(root["validStringStruct"], "n", true)"""
222+
207223
[<Fact>]
208224
let ``ObjectListFilter works with Contains operator for ValidStringStruct`` () =
209225
let queryable = container.GetItemLinqQueryable<FakeEntity> ()
@@ -212,6 +228,14 @@ let ``ObjectListFilter works with Contains operator for ValidStringStruct`` () =
212228
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
213229
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE CONTAINS(root["validStringStruct"], "athan")"""
214230

231+
[<Fact>]
232+
let ``ObjectListFilter works with Contains case insensitive operator for ValidStringStruct`` () =
233+
let queryable = container.GetItemLinqQueryable<FakeEntity> ()
234+
let filter = Contains ({ FieldName = "validStringStruct"; Value = "athan" }, StringComparer.OrdinalIgnoreCase)
235+
let filterQuery = queryable.Apply (filter, filterOptions)
236+
let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery
237+
equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE CONTAINS(root["validStringStruct"], "athan", true)"""
238+
215239
[<Fact>]
216240
let ``ObjectListFilter works with Contains operator for ValidStringStruct list`` () =
217241
let queryable = container.GetItemLinqQueryable<FakeEntity> ()

tests/FSharp.Data.GraphQL.Tests/ObjectListFilterLinqTests.fs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,13 @@ let ``ObjectListFilter works with Equals case insensitive operator`` () =
538538
result.FirstName |> equals "Jonathan"
539539
result.LastName |> equals "Abrams"
540540

541+
[<Fact>]
542+
let ``ObjectListFilter works with Equals case sensitive operator`` () =
543+
let filter = Equals ({ FieldName = "firstName"; Value = "jonathan" }, null)
544+
let queryable = data.AsQueryable ()
545+
let filteredData = queryable.Apply (filter) |> Seq.toList
546+
List.length filteredData |> equals 0
547+
541548
[<Fact>]
542549
let ``ObjectListFilter works with Equals case insensitive operator upper case`` () =
543550
let filter = Equals ({ FieldName = "firstName"; Value = "JONATHAN" }, StringComparer.OrdinalIgnoreCase)
@@ -548,6 +555,13 @@ let ``ObjectListFilter works with Equals case insensitive operator upper case``
548555
result.ID |> equals 2
549556
result.FirstName |> equals "Jonathan"
550557

558+
[<Fact>]
559+
let ``ObjectListFilter works with Equals case sensitive operator upper case`` () =
560+
let filter = Equals ({ FieldName = "firstName"; Value = "JONATHAN" }, null)
561+
let queryable = data.AsQueryable ()
562+
let filteredData = queryable.Apply (filter) |> Seq.toList
563+
List.length filteredData |> equals 0
564+
551565
[<Fact>]
552566
let ``ObjectListFilter works with StartsWith case insensitive operator`` () =
553567
let filter = StartsWith ({ FieldName = "firstName"; Value = "j" }, StringComparer.OrdinalIgnoreCase)
@@ -558,6 +572,13 @@ let ``ObjectListFilter works with StartsWith case insensitive operator`` () =
558572
result.ID |> equals 2
559573
result.FirstName |> equals "Jonathan"
560574

575+
[<Fact>]
576+
let ``ObjectListFilter works with StartsWith case sensitive operator`` () =
577+
let filter = StartsWith ({ FieldName = "firstName"; Value = "j" }, null)
578+
let queryable = data.AsQueryable ()
579+
let filteredData = queryable.Apply (filter) |> Seq.toList
580+
List.length filteredData |> equals 0
581+
561582
[<Fact>]
562583
let ``ObjectListFilter works with EndsWith case insensitive operator`` () =
563584
let filter = EndsWith ({ FieldName = "lastName"; Value = "AMS" }, StringComparer.OrdinalIgnoreCase)
@@ -571,6 +592,13 @@ let ``ObjectListFilter works with EndsWith case insensitive operator`` () =
571592
result.ID |> equals 2
572593
result.LastName |> equals "Abrams"
573594

595+
[<Fact>]
596+
let ``ObjectListFilter works with EndsWith case sensitive operator`` () =
597+
let filter = EndsWith ({ FieldName = "lastName"; Value = "AMS" }, null)
598+
let queryable = data.AsQueryable ()
599+
let filteredData = queryable.Apply (filter) |> Seq.toList
600+
List.length filteredData |> equals 0
601+
574602
[<Fact>]
575603
let ``ObjectListFilter works with Contains case insensitive operator`` () =
576604
let filter = Contains ({ FieldName = "firstName"; Value = "EN" }, StringComparer.OrdinalIgnoreCase)
@@ -585,9 +613,8 @@ let ``ObjectListFilter works with Contains case insensitive operator`` () =
585613
result.FirstName |> equals "Jeneffer"
586614

587615
[<Fact>]
588-
let ``ObjectListFilter case-insensitive operators do not match with case-sensitive filters`` () =
589-
// Exact case-sensitive StartsWith "j" (lowercase) should match nothing in the data
590-
let filter = StartsWith ({ FieldName = "firstName"; Value = "j" }, null)
616+
let ``ObjectListFilter works with Contains case sensitive operator`` () =
617+
let filter = Contains ({ FieldName = "firstName"; Value = "EN" }, null)
591618
let queryable = data.AsQueryable ()
592619
let filteredData = queryable.Apply (filter) |> Seq.toList
593620
List.length filteredData |> equals 0

0 commit comments

Comments
 (0)