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

[DOCS-2634] Document Client.paginate() #255

Merged
merged 2 commits into from
Apr 3, 2024

Update README.md

a6a8462
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

[DOCS-2634] Document Client.paginate() #255

Update README.md
a6a8462
Select commit
Loading
Failed to load commit list.
GitHub Actions / Jest Tests 18 succeeded Apr 3, 2024 in 0s

231 passed, 0 failed and 1 skipped

Tests passed successfully

✅ reports/jest-junit.xml

232 tests were completed in 13s with 231 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
tests/functional/client-configuration.test.ts 23✅ 1s
tests/integration/client-last-txn-tracking.test.ts 3✅ 664ms
tests/integration/doc.test.ts 7✅ 669ms
tests/integration/existing-collection.test.ts 1✅ 949ms
tests/integration/query-limits.test.ts 1⚪ 190ms
tests/integration/query-typings.test.ts 2✅ 171ms
tests/integration/query.test.ts 28✅ 9s
tests/integration/schema-version.test.ts 1✅ 532ms
tests/integration/set.test.ts 12✅ 2s
tests/integration/template-format.test.ts 13✅ 292ms
tests/unit/client.test.ts 4✅ 271ms
tests/unit/datetime.test.ts 28✅ 205ms
tests/unit/doc.test.ts 9✅ 164ms
tests/unit/fetch-client.test.ts 4✅ 475ms
tests/unit/node-http2-client.test.ts 1✅ 202ms
tests/unit/package-verison.test.ts 1✅ 159ms
tests/unit/query-builder.test.ts 13✅ 330ms
tests/unit/query.test.ts 20✅ 12s
tests/unit/set.test.ts 11✅ 179ms
tests/unit/tagged-format.test.ts 50✅ 7s

✅ tests/functional/client-configuration.test.ts

ClientConfiguration
  ✅ Client exposes a default client configuration
  ✅ can be initialized with an endpoint from the environment
  ✅ Client respectes passed in client configuration over defaults
  ✅ A ClientConfiguration setting with no secret throws an error on driver construction
  ✅ endpoints is extensible
  ✅ client allows txn time to be set
  ✅ Setting clientConfiguration linearized leads to it being sent in headers
  ✅ Setting clientConfiguration max_contention_retries leads to it being sent in headers
  ✅ Setting clientConfiguration query_tags leads to it being sent in headers
  ✅ Setting clientConfiguration traceparent leads to it being sent in headers
  ✅ Setting clientConfiguration typecheck leads to it being sent in headers
  ✅ can accept endpoints with or without a trailing slash.
  ✅ throws if client_timeout_buffer_ms provided is undefined
  ✅ throws if endpoint provided is undefined
  ✅ throws if format provided is undefined
  ✅ throws if http2_session_idle_ms provided is undefined
  ✅ throws if query_timeout_ms provided is undefined
  ✅ throws if http2_max_streams provided is undefined
  ✅ throws if fetch_keepalive provided is undefined
  ✅ throws if long_type provided is undefined
  ✅ throws a RangeError if 'client_timeout_buffer_ms' is less than or equal to zero
  ✅ throws a RangeError if 'query_timeout_ms' is less than or equal to zero
  ✅ throws a RangeError if 'http2_max_streams' is less than or equal to zero

✅ tests/integration/client-last-txn-tracking.test.ts

last_txn_ts tracking in client
  ✅ Tracks the last_txn_ts datetime and send in the headers
  ✅ Accepts an override of the last_txn_ts datetime and sends in the headers
  ✅ Ignores overrides  of the lastTxnTs that are less than the current value or undefined

✅ tests/integration/doc.test.ts

querying for doc types
  ✅ can round-trip Module
  ✅ can round-trip DocumentReference to a non-existent doc
  ✅ can round-trip DocumentReference to an existent doc
  ✅ can round-trip Document
  ✅ can round-trip NamedDocumentReference
  ✅ can round-trip NamedDocument
  ✅ get doc types from FQL

✅ tests/integration/existing-collection.test.ts

querying for existing data
  ✅ Can query an existing index

✅ tests/integration/query-limits.test.ts

Query with limits enabled
  ⚪ succeeds on retry after getting throttled

✅ tests/integration/query-typings.test.ts

query typings
  ✅ allows customers to use their own types
paginate typings
  ✅ allows customers to use their own types

✅ tests/integration/query.test.ts

query
  ✅ Can query an FQL v10 endpoint
  ✅ Can query with arguments
  ✅ Can query with tags
  ✅ respects QueryRequest field format over ClientConfiguration format
  ✅ respects QueryRequest field linearized over ClientConfiguration linearized
  ✅ respects QueryRequest field query_timeout_ms over ClientConfiguration query_timeout_ms
  ✅ respects QueryRequest field max_contention_retries over ClientConfiguration max_contention_retries
  ✅ respects QueryRequest field query_tags over ClientConfiguration query_tags
  ✅ respects QueryRequest field traceparent over ClientConfiguration traceparent
  ✅ respects QueryRequest field typecheck over ClientConfiguration typecheck
  ✅ respects typechecked: undefined
  ✅ can send arguments directly
  ✅ throws a QueryCheckError if the query is invalid
  ✅ throws a QueryRuntimeError if the query hits a runtime error
  ✅ Includes constraint failures when present
  ✅ throws an InvalidRequestError when request is invalid
  ✅ throws a AbortError is the `abort` function is called
  ✅ throws a QueryTimeoutError if the query times out
  ✅ throws a AuthenticationError creds are invalid
  ✅ throws a AuthorizationError if creds are not permissioned.
  ✅ throws a NetworkError if the connection fails.
  ✅ throws a NetworkError on client timeout
  ✅ throws a ClientError if the client fails unexpectedly
  ✅ throws a ProtocolError if the http fails outside Fauna
  ✅ session is closed regardless of number of clients
  ✅ can be called after session idle timeout
query can encode / decode QueryValue correctly
  ✅ treats undefined as unprovided when in object
  ✅ undefined arguments throw a TypeError

✅ tests/integration/schema-version.test.ts

schema version is returned by the client
  ✅ returns the schema version

✅ tests/integration/set.test.ts

querying for set
  ✅ can round-trip Page
SetIterator
  ✅ can get single page using for..of when the set is small
  ✅ can get multiple pages using for..of when the set is large
  ✅ can get pages using next()
  ✅ can get pages using a loop with next()
  ✅ can can stop the iterator with the return method
  ✅ can can stop the iterator with the throw method
  ✅ can paginate a query that returns a set
  ✅ can paginate a query that does NOT return a set
  ✅ can be flattened
  ✅ each page respects QueryOptions using an existing Page
  ✅ each page respects QueryOptions using an a query

✅ tests/integration/template-format.test.ts

query using template format
  ✅ succeeds with no arguments
  ✅ succeeds with a string variable
  ✅ succeeds with an Int variable
  ✅ succeeds with a Long variable
  ✅ succeeds with a Double variable
  ✅ succeeds with a boolean variable
  ✅ succeeds with a null variable
  ✅ succeeds with an object variable
  ✅ succeeds with an array variable
  ✅ succeeds with multiple variables
  ✅ succeeds with nested expressions
  ✅ succeeds with deep nested expressions
  ✅ succeeds with FQL string interpolation

✅ tests/unit/client.test.ts

Client
  ✅ Allows setting a secret in query
  ✅ Refuses further requests after close
  ✅ Refuses calls to close after client is closed.
  ✅ Allows for creation and usage of a new client after first client closed.

✅ tests/unit/datetime.test.ts

values
  ✅ can construct TimeStub from strings: Z
  ✅ can construct TimeStub from strings: - HH:MM
  ✅ can construct TimeStub from strings: - HHMM
  ✅ can construct TimeStub from strings: + HH:MM
  ✅ can construct TimeStub from strings: + HHMM
  ✅ can construct TimeStub from strings: +yyyyy
  ✅ can construct TimeStub from strings: -yyyy
  ✅ can construct DateStub from strings: some date
  ✅ can construct DateStub from strings: leap year
  ✅ can construct TimeStub from Date: Z
  ✅ can construct TimeStub from Date: - HH:MM
  ✅ can construct TimeStub from Date: + HH:MM
  ✅ can construct TimeStub from Date: no timezone
  ✅ can construct TimeStub from Date: no time
  ✅ can construct DateStub from Date: Z
  ✅ can construct DateStub from Date: - HH:MM
  ✅ can construct DateStub from Date: + HH:MM
  ✅ can construct DateStub from Date: no timezone
  ✅ can construct DateStub from Date: no time
  ✅ can deconstruct TimeStub into a Date: Z
  ✅ can deconstruct TimeStub into a Date: - HH:MM
  ✅ can deconstruct TimeStub into a Date: - HHMM
  ✅ can deconstruct TimeStub into a Date: + HH:MM
  ✅ can deconstruct TimeStub into a Date: + HHMM
  ✅ can deconstruct TimeStub into a Date: +yyyyy
  ✅ can deconstruct TimeStub into a Date: -yyyy
  ✅ can deconstruct DateStub into a Date: some date
  ✅ can deconstruct DateStub into a Date: leap year

✅ tests/unit/doc.test.ts

Module
  ✅ can be constructed directly
DocumentReference
  ✅ can be constructed directly
Document
  ✅ can be constructed directly
  ✅ can access user data
NamedDocumentReference
  ✅ can be constructed directly
NamedDocument
  ✅ can be constructed without data
  ✅ can be constructed without data
NullDocument
  ✅ can be constructed directly with a DocumentReference
  ✅ can be constructed directly with a NamedDocumentReference

✅ tests/unit/fetch-client.test.ts

fetch client
  ✅ returns a valid query response on success
  ✅ returns a valid query response on failure
  ✅ returns a NetworkError if fetch rejects
  ✅ returns a NetworkError if client timeout causes an abort

✅ tests/unit/node-http2-client.test.ts

node http2 client
  ✅ default client for Node.js is the NodeHTTP2Client

✅ tests/unit/package-verison.test.ts

package version
  ✅ is correct

✅ tests/unit/query-builder.test.ts

fql method producing Querys
  ✅ parses with no variables
  ✅ parses with a string variable
  ✅ parses with a number variable
  ✅ parses with a boolean variable
  ✅ parses with a null variable
  ✅ parses with an object variable
  ✅ parses with an object variable having a toQuery property
  ✅ parses with an array variable
  ✅ parses with multiple variables
  ✅ parses nested expressions
  ✅ parses deep nested expressions
  ✅ adds headers if passed in
  ✅ parses with FQL string interpolation

✅ tests/unit/query.test.ts

query
  ✅ throws an [Function AuthorizationError] on a 403
  ✅ throws an [Function QueryTimeoutError] on a 440
  ✅ throws an [Function ServiceError] on a 999
  ✅ throws an [Function ThrottlingError] on a 429
  ✅ throws an [Function ServiceInternalError] on a 500
  ✅ throws an [Function ServiceTimeoutError] on a 503
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when present in error field
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ Includes a summary when not present in error field but present at top-level
  ✅ retries throttling errors and then succeeds
  ✅ Includes a summary in a QueryResult when present at top-level

✅ tests/unit/set.test.ts

Page
  ✅ can be constructed directly
  ✅ after is optional
Embedded Set
  ✅ can be constructed directly
SetIterator
  ✅ can be constructed from a Page
  ✅ can be constructed from an EmbeddedSet
  ✅ can be constructed with an initial thunk for a T
  ✅ can be constructed with an initial thunk for a Page<T>
  ✅ can be constructed with an initial thunk for an EmbeddedSet
  ✅ can be flattened
  ✅ can flatten a Page
  ✅ throws if data and after are both undefined

✅ tests/unit/tagged-format.test.ts

tagged format with long_type number
  ✅ can be decoded
  ✅ can be encoded
  ✅ handles conflicts
  ✅ handles nested conflict types
  ✅ wraps user-provided `@` fields
  ✅ Properly encodes and decodes number -(2**63)
  ✅ Properly encodes and decodes number -(2**53)
  ✅ Properly encodes and decodes number -(2**53 - 1)
  ✅ Properly encodes and decodes number -(2**31) - 1
  ✅ Properly encodes and decodes number -(2**31)
  ✅ Properly encodes and decodes number 0 (Int)
  ✅ Properly encodes and decodes number 1 (Int)
  ✅ Properly encodes and decodes number 0 (Long)
  ✅ Properly encodes and decodes number 2**31 - 1
  ✅ Properly encodes and decodes number 2**31
  ✅ Properly encodes and decodes number 2**53 - 1
  ✅ Properly encodes and decodes number 2**53
  ✅ Properly encodes and decodes number 2**64 - 1
  ✅ Properly encodes and decodes number 1.3**63
  ✅ Properly encodes and decodes number 1.3
  ✅ Properly encodes and decodes number 0.000000008
  ✅ Throws if BigInt value is lower than -(2**63) - 1
  ✅ Throws if BigInt value is greater than 2**63
  ✅ Throws if BigInt value is NEGATIVE_INFINITY
  ✅ Throws if BigInt value is POSITIVE_INFINITY
tagged format with long_type bigint
  ✅ can be decoded
  ✅ can be encoded
  ✅ handles conflicts
  ✅ handles nested conflict types
  ✅ wraps user-provided `@` fields
  ✅ Properly encodes and decodes number -(2**63)
  ✅ Properly encodes and decodes number -(2**53)
  ✅ Properly encodes and decodes number -(2**53 - 1)
  ✅ Properly encodes and decodes number -(2**31) - 1
  ✅ Properly encodes and decodes number -(2**31)
  ✅ Properly encodes and decodes number 0 (Int)
  ✅ Properly encodes and decodes number 1 (Int)
  ✅ Properly encodes and decodes number 0 (Long)
  ✅ Properly encodes and decodes number 2**31 - 1
  ✅ Properly encodes and decodes number 2**31
  ✅ Properly encodes and decodes number 2**53 - 1
  ✅ Properly encodes and decodes number 2**53
  ✅ Properly encodes and decodes number 2**64 - 1
  ✅ Properly encodes and decodes number 1.3**63
  ✅ Properly encodes and decodes number 1.3
  ✅ Properly encodes and decodes number 0.000000008
  ✅ Throws if BigInt value is lower than -(2**63) - 1
  ✅ Throws if BigInt value is greater than 2**63
  ✅ Throws if BigInt value is NEGATIVE_INFINITY
  ✅ Throws if BigInt value is POSITIVE_INFINITY