1
0
mirror of https://github.com/dstotijn/go-notion.git synced 2025-06-15 00:05:04 +02:00

Enable empty DatabaseQueryFilter (#15)

* Add test for "DatabaseQuery"

* Fix DatabaseQuery Filter field type

* Assert database query JSON omit logic in `Client` tests

Co-authored-by: Alexandre Falardeau <asfal@AsFal-Laptop.local>
Co-authored-by: David Stotijn <dstotijn@gmail.com>
This commit is contained in:
Alexandre Falardeau
2021-05-25 12:24:52 -04:00
committed by GitHub
parent c675641a4c
commit 969ba033ff
2 changed files with 28 additions and 6 deletions

View File

@ -406,7 +406,7 @@ func TestQueryDatabase(t *testing.T) {
{
name: "with query, successful response",
query: &notion.DatabaseQuery{
Filter: notion.DatabaseQueryFilter{
Filter: &notion.DatabaseQueryFilter{
Property: "Name",
Text: &notion.TextDatabaseQueryFilter{
Contains: "foobar",
@ -775,7 +775,7 @@ func TestQueryDatabase(t *testing.T) {
expError: nil,
},
{
name: "without query, successful response",
name: "without query, doesn't send POST body",
query: nil,
respBody: func(_ *http.Request) io.Reader {
return strings.NewReader(
@ -796,6 +796,28 @@ func TestQueryDatabase(t *testing.T) {
},
expError: nil,
},
{
name: "with non nil query, but without fields, omits all fields from POST body",
query: &notion.DatabaseQuery{},
respBody: func(_ *http.Request) io.Reader {
return strings.NewReader(
`{
"object": "list",
"results": [],
"next_cursor": null,
"has_more": false
}`,
)
},
respStatusCode: http.StatusOK,
expPostBody: map[string]interface{}{},
expResponse: notion.DatabaseQueryResponse{
Results: []notion.Page{},
HasMore: false,
NextCursor: nil,
},
expError: nil,
},
{
name: "error response",
respBody: func(_ *http.Request) io.Reader {

View File

@ -91,10 +91,10 @@ type DatabaseProperty struct {
// DatabaseQuery is used for quering a database.
type DatabaseQuery struct {
Filter DatabaseQueryFilter `json:"filter,omitempty"`
Sorts []DatabaseQuerySort `json:"sorts,omitempty"`
StartCursor string `json:"start_cursor,omitempty"`
PageSize int `json:"page_size,omitempty"`
Filter *DatabaseQueryFilter `json:"filter,omitempty"`
Sorts []DatabaseQuerySort `json:"sorts,omitempty"`
StartCursor string `json:"start_cursor,omitempty"`
PageSize int `json:"page_size,omitempty"`
}
// DatabaseQueryResponse contains the results and pagination data from a query request.