-
Notifications
You must be signed in to change notification settings - Fork 76
Implemented tests for scalar wrappers #524
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
xperiandri
merged 9 commits into
fsprojects:dev
from
VectorTetra:object-list-filter-generation
Apr 2, 2025
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
ef5b3a7
Implemented new tests for scalar wrappers
9754837
PR fixes
b13318b
PR fixes
19c2a7c
PR fixes
d923302
PR fixes
f3300d9
PR fixes
be7960a
PR fixes
48e468f
PR fixes
282b181
Update tests/FSharp.Data.GraphQL.Tests/ObjectListFilterLinqGenerateTe…
xperiandri File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
120 changes: 120 additions & 0 deletions
120
tests/FSharp.Data.GraphQL.Tests/ObjectListFilterLinqGenerateTests.fs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,120 @@ | ||
| module FSharp.Data.GraphQL.Tests.ObjectListFilterLinqGenerateTests | ||
|
|
||
| open Xunit | ||
| open System | ||
| open System.Numerics | ||
| open Microsoft.Azure.Cosmos.Linq | ||
| open Microsoft.Azure.Cosmos | ||
| open FSharp.Data.GraphQL.Shared | ||
| open FSharp.Data.GraphQL.Server.Middleware | ||
|
|
||
| [<Struct>] | ||
| type ValidStringStruct = | ||
| internal | ||
| | ValidStringStruct of string | ||
| static member internal op_Equality (ValidStringStruct left, ValidStringStruct right) = left = right | ||
| static member internal op_Inequality (ValidStringStruct left, ValidStringStruct right) = left <> right | ||
|
|
||
| static member internal op_Equality (ValidStringStruct left, right) = left = right | ||
| static member internal op_Inequality (ValidStringStruct left, right) = left <> right | ||
| static member internal op_GreaterThan (ValidStringStruct left, right) = left > right | ||
| static member internal op_GreaterThanOrEqual (ValidStringStruct left, right) = left >= right | ||
| static member internal op_LessThan (ValidStringStruct left, right) = left < right | ||
| static member internal op_LessThanOrEqual (ValidStringStruct left, right) = left <= right | ||
|
|
||
| // Just for demo purposes | ||
| interface IEqualityOperators<ValidStringStruct, ValidStringStruct, bool> with | ||
| static member op_Equality (ValidStringStruct left, ValidStringStruct right) = left = right | ||
| static member op_Inequality (ValidStringStruct left, ValidStringStruct right) = left <> right | ||
| interface IComparisonOperators<ValidStringStruct, ValidStringStruct, bool> with | ||
| static member op_GreaterThan (ValidStringStruct left, ValidStringStruct right) = left > right | ||
| static member op_GreaterThanOrEqual (ValidStringStruct left, ValidStringStruct right) = left >= right | ||
| static member op_LessThan (ValidStringStruct left, ValidStringStruct right) = left < right | ||
| static member op_LessThanOrEqual (ValidStringStruct left, ValidStringStruct right) = left <= right | ||
|
|
||
| type ValidStringObject = | ||
| internal | ||
| | ValidStringObject of string | ||
| static member internal op_Equality (ValidStringObject left, ValidStringObject right) = left = right | ||
| static member internal op_Inequality (ValidStringObject left, ValidStringObject right) = left <> right | ||
| static member internal op_Equality (ValidStringObject left, right) = left = right | ||
| static member internal op_Inequality (ValidStringObject left, right) = left <> right | ||
| static member internal op_GreaterThan (ValidStringObject left, right) = left > right | ||
| static member internal op_GreaterThanOrEqual (ValidStringObject left, right) = left >= right | ||
| static member internal op_LessThan (ValidStringObject left, right) = left < right | ||
| static member internal op_LessThanOrEqual (ValidStringObject left, right) = left <= right | ||
|
|
||
| // Just for demo purposes | ||
| interface IEqualityOperators<ValidStringObject, ValidStringObject, bool> with | ||
| static member op_Equality (ValidStringObject left, ValidStringObject right) = left = right | ||
| static member op_Inequality (ValidStringObject left, ValidStringObject right) = left <> right | ||
| interface IComparisonOperators<ValidStringObject, ValidStringObject, bool> with | ||
| static member op_GreaterThan (ValidStringObject left, ValidStringObject right) = left > right | ||
| static member op_GreaterThanOrEqual (ValidStringObject left, ValidStringObject right) = left >= right | ||
| static member op_LessThan (ValidStringObject left, ValidStringObject right) = left < right | ||
| static member op_LessThanOrEqual (ValidStringObject left, ValidStringObject right) = left <= right | ||
|
|
||
| [<Struct>] | ||
| type ValidIntStruct = | ||
| internal | ||
| | ValidIntStruct of Int64 | ||
| static member internal op_Equality (ValidIntStruct left, ValidIntStruct right) = left = right | ||
| static member internal op_Inequality (ValidIntStruct left, ValidIntStruct right) = left <> right | ||
| static member internal op_GreaterThan (ValidIntStruct left, right : Int64) = left > right | ||
|
|
||
| type ValidIntObject = | ||
| internal | ||
| | ValidIntObject of Int64 | ||
| static member internal op_Equality (ValidIntObject left, ValidIntObject right) = left = right | ||
| static member internal op_Inequality (ValidIntObject left, ValidIntObject right) = left <> right | ||
| static member internal op_GreaterThan (ValidIntObject left, right : Int64) = left > right | ||
|
|
||
| type FakeEntity = { | ||
| ValidStringStruct : ValidStringStruct | ||
| ValidStringObject : ValidStringObject | ||
| string : string | ||
| ValidIntStruct : ValidIntStruct | ||
| ValidIntObject : ValidIntObject | ||
| int : Int64 | ||
| } | ||
|
|
||
| let jsonOptions = Json.getSerializerOptions Seq.empty | ||
| let cosmosClient = | ||
| let options = CosmosClientOptions(UseSystemTextJsonSerializerWithOptions = jsonOptions) | ||
| new CosmosClient ("https://localhost:8081/", "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", options) | ||
| let container = cosmosClient.GetContainer("database", "container") | ||
| let filterOptions = | ||
| ObjectListFilterLinqOptions<FakeEntity, obj>.None | ||
|
|
||
| [<Fact>] | ||
| let ``ObjectListFilter works with Equals operator for ValidStringStruct`` () = | ||
| let queryable = container.GetItemLinqQueryable<FakeEntity> () | ||
| let filter = Equals { FieldName = "validStringStruct"; Value = "Jonathan"} | ||
| let filterQuery = queryable.Apply (filter, filterOptions) | ||
| let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery | ||
| equals queryDefinition.QueryText """SELECT VALUE root FROM root WHERE (root["validStringStruct"] = "Jonathan")""" | ||
|
|
||
| [<Fact>] | ||
| let ``ObjectListFilter works with Equals operator for ValidStringObject`` () = | ||
| let filter = Equals { FieldName = "validStringObject"; Value = ValidStringObject "Jonathan" } | ||
| let queryable = container.GetItemLinqQueryable<FakeEntity> () | ||
| let filterQuery = queryable.Apply (filter) | ||
| let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery | ||
| equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE (root["validStringObject"] = "Jonathan")""" | ||
|
|
||
| [<Fact>] | ||
| let ``ObjectListFilter works with GreaterThan operator for ValidIntStruct`` () = | ||
| let queryable = container.GetItemLinqQueryable<FakeEntity> () | ||
| let filter = GreaterThan { FieldName = "validIntStruct"; Value = 6L } | ||
| let filterQuery = queryable.Apply (filter, filterOptions) | ||
| let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery | ||
| equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE (root["validIntStruct"] > 6)""" | ||
|
|
||
| [<Fact>] | ||
| let ``ObjectListFilter works with GreaterThan operator for ValidIntObject`` () = | ||
| let filter = GreaterThan { FieldName = "validIntObject"; Value = 6L } | ||
| let queryable = container.GetItemLinqQueryable<FakeEntity> () | ||
| let filterQuery = queryable.Apply (filter) | ||
| let queryDefinition = CosmosLinqExtensions.ToQueryDefinition filterQuery | ||
| equals queryDefinition.QueryText, """SELECT VALUE root FROM root WHERE (root["validIntObject"] > 6)""" | ||
|
|
||
VectorTetra marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.