Skip to content
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

test(i): Test top level agg. wt compound relational filter #1870

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ import (
// },
// }

// testUtils.AssertPanicAndSkipChangeDetection(t, func() { executeTestCase(t, test) })
// testUtils.AssertPanic(t, func() { executeTestCase(t, test) })
// }

func TestQueryOneToManyWithCidAndDocKey(t *testing.T) {
Expand Down
119 changes: 119 additions & 0 deletions tests/integration/query/one_to_one/with_count_filter_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
// Copyright 2023 Democratized Data Foundation
//
// Use of this software is governed by the Business Source License
// included in the file licenses/BSL.txt.
//
// As of the Change Date specified in that file, in accordance with
// the Business Source License, use of this software will be governed
// by the Apache License, Version 2.0, included in the file
// licenses/APL.txt.

package one_to_one

import (
"testing"

testUtils "github.com/sourcenetwork/defradb/tests/integration"
)

// This test documents a bug and should be altered with:
// https://github.com/sourcenetwork/defradb/issues/1869
func TestQueryOneToOneWithCountWithCompoundOrFilterThatIncludesRelation(t *testing.T) {
test := testUtils.TestCase{
Description: "One-to-one relation with count with _or filter that includes relation",
Actions: []any{
testUtils.SchemaUpdate{
Schema: bookAuthorGQLSchema,
},
testUtils.CreateDoc{
CollectionID: 0,
// bae-fd541c25-229e-5280-b44b-e5c2af3e374d
Doc: `{
"name": "Painted House",
"rating": 4.9
}`,
},
testUtils.CreateDoc{
CollectionID: 0,
// bae-f60d6af6-92f7-5f11-9182-1d7273a5a9e8
Doc: `{
"name": "Some Book",
"rating": 4.0
}`,
},
testUtils.CreateDoc{
CollectionID: 0,
// bae-1c890922-ddf9-5820-a888-c7f977848934
Doc: `{
"name": "Some Other Book",
"rating": 3.5
}`,
},
testUtils.CreateDoc{
CollectionID: 0,
// bae-e8642720-08cb-5f5b-a8d6-7187c444a78d
Doc: `{
"name": "Yet Another Book",
"rating": 3.0
}`,
},
testUtils.CreateDoc{
CollectionID: 1,
// bae-41598f0c-19bc-5da6-813b-e80f14a10df3
Doc: `{
"name": "John Grisham",
"age": 65,
"verified": true,
"published_id": "bae-fd541c25-229e-5280-b44b-e5c2af3e374d"
}`,
},
testUtils.CreateDoc{
CollectionID: 1,
Doc: `{
"name": "Some Writer",
"age": 45,
"verified": false,
"published_id": "bae-f60d6af6-92f7-5f11-9182-1d7273a5a9e8"
}`,
},
testUtils.CreateDoc{
CollectionID: 1,
Doc: `{
"name": "Some Other Writer",
"age": 35,
"verified": false,
"published_id": "bae-1c890922-ddf9-5820-a888-c7f977848934"
}`,
},
testUtils.CreateDoc{
CollectionID: 1,
Doc: `{
"name": "Yet Another Writer",
"age": 30,
"verified": false,
"published_id": "bae-e8642720-08cb-5f5b-a8d6-7187c444a78d"
}`,
},
testUtils.Request{
Request: `query {
_count(Book: {filter: {_or: [
{_not: {author: {age: {_lt: 65}}} },
{_not: {author: {age: {_gt: 30}}} }
]}})
}`,
Results: []map[string]any{
{
"_count": "2",
},
},
},
},
}

testUtils.AssertPanic(
t,
func() {
testUtils.ExecuteTestCase(t, test)
},
)
}
19 changes: 13 additions & 6 deletions tests/integration/utils2.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,17 +196,24 @@ func init() {
}
}

// AssertPanicAndSkipChangeDetection asserts that the code of function actually panics,
// AssertPanic asserts that the code inside the specified PanicTestFunc panics.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick(non-blocking): Rename suggestion

Suggested change
// AssertPanic asserts that the code inside the specified PanicTestFunc panics.
// AssertPanicOrSkip asserts that the code inside the specified PanicTestFunc panics.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:) I do disagree here, although I think my views over time have shifted, and I might have been the one to originally ask for the longer name. Will leave as AssertPanic unless anyone else requests the change before I rebase and merge.

//
// also ensures the change detection is skipped so no false fails happen.
// This function is not supported by either the change detector, or the http-client.
// Calling this within either of them will result in the test being skipped.
//
// Usage: AssertPanicAndSkipChangeDetection(t, func() { executeTestCase(t, test) })
func AssertPanicAndSkipChangeDetection(t *testing.T, f assert.PanicTestFunc) bool {
// Usage: AssertPanic(t, func() { executeTestCase(t, test) })
func AssertPanic(t *testing.T, f assert.PanicTestFunc) bool {
if IsDetectingDbChanges() {
// The `assert.Panics` call will falsely fail if this test is executed during
// a detect changes test run
t.Skip()
// a detect changes test run.
t.Skip("Assert panic with the change detector is not currently supported.")
}

if httpClient {
// The http-client will return an error instead of panicing at the moment.
t.Skip("Assert panic with the http client is not currently supported.")
}

return assert.Panics(t, f, "expected a panic, but none found.")
}

Expand Down