/home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/CountTest.php [x] `::all()` → counts all documents [x] `::byFields()` → counts for numeric range correctly [x] `::byFields()` → counts for non-numeric range correctly [x] `::byContains()` → counts matching documents [x] `::byContains()` → returns 0 for no matching documents [x] `::byJsonPath()` → counts matching documents [x] `::byJsonPath()` → returns 0 for no matching documents /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/CustomTest.php [x] `::runQuery()` → runs a valid query successfully [x] `::runQuery()` → fails with an invalid query [x] `::list()` → returns non-empty list when data found [x] `::list()` → returns empty list when no data found [x] `::array()` → returns non-empty array when data found [x] `::array()` → returns empty array when no data found [x] `::jsonArray()` → returns non-empty array when data found [x] `::jsonArray()` → returns empty array when no data found [x] `::outputJsonArray()` → outputs non-empty array when data found [x] `::outputJsonArray()` → outputs empty array when no data found [x] `::single()` → returns a document when one is found [x] `::single()` → returns no document when one is not found [x] `::jsonSingle()` → returns a document when one is found [x] `::jsonSingle()` → returns no document when one is not found [x] `::nonQuery()` → works when documents match the WHERE clause [x] `::nonQuery()` → works when no documents match the WHERE clause [x] `::scalar()` → returns a scalar value /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/DefinitionTest.php [x] `::ensureTable()` → creates a table [x] `::ensureFieldIndex()` → creates an index [x] `::ensureDocumentIndex()` → creates a full index [x] `::ensureDocumentIndex()` → creates an optimized index /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/DeleteTest.php [x] `::byId()` → deletes a document when ID is matched [x] `::byId()` → does not delete a document when ID is not matched [x] `::byFields()` → deletes documents when fields match [x] `::byFields()` → does not delete documents when fields are not matched [x] `::byContains()` → deletes documents when containment matches [x] `::byContains()` → does not delete documents when containment is not matched [x] `::byJsonPath()` → deletes documents when path matches [x] `::byJsonPath()` → does not delete documents when path is not matched /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/DocumentListTest.php [x] `::create()` → creates a document list [x] `->items` → enumerates items in the list [x] `->items` → fails when the list is exhausted [x] `->hasItems` → returns false when no items are in the list [x] `->hasItems` → returns true when items are in the list [x] `->map()` → transforms the list [x] `->iter()` → walks the list [x] `->mapToArray()` → creates an associative array /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/DocumentTest.php [x] `::insert()` → inserts an array with no automatic ID [x] `::insert()` → inserts an array with auto-number ID, not provided [x] `::insert()` → inserts an array with auto-number ID, provided [x] `::insert()` → inserts an array with auto-UUID ID, not provided [x] `::insert()` → inserts an array with auto-UUID ID, provided [x] `::insert()` → inserts an array with auto-string ID, not provided [x] `::insert()` → inserts an array with auto-string ID, provided [x] `::insert()` → inserts an object with no automatic ID [x] `::insert()` → inserts an object with auto-number ID, not provided [x] `::insert()` → inserts an object with auto-number ID, provided [x] `::insert()` → inserts an object with auto-UUID ID, not provided [x] `::insert()` → inserts an object with auto-UUID ID, provided [x] `::insert()` → inserts an object with auto-string ID, not provided [x] `::insert()` → inserts an object with auto-string ID, provided [x] `::insert()` → throws an exception for duplicate key [x] `::save()` → inserts a new document [x] `::save()` → updates an existing document [x] `::update()` → replaces an existing document [x] `::update()` → does nothing for a non-existent document /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/ExistsTest.php [x] `::byId()` → returns true when a document exists [x] `::byId()` → returns false when a document does not exist [x] `::byFields()` → returns true when matching documents exist [x] `::byFields()` → returns false when no matching documents exist [x] `::byContains()` → returns true when matching documents exist [x] `::byContains()` → returns false when no matching documents exist [x] `::byJsonPath()` → returns true when matching documents exist [x] `::byJsonPath()` → returns false when no matching documents exist /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/FindTest.php [x] `::all()` → retrieves data [x] `::all()` → sorts data ascending [x] `::all()` → sorts data descending [x] `::all()` → sorts data numerically [x] `::all()` → retrieves empty results [x] `::byId()` → retrieves a document via string ID [x] `::byId()` → retrieves a document via numeric ID [x] `::byId()` → returns None when a document is not found [x] `::byFields()` → retrieves matching documents [x] `::byFields()` → retrieves ordered matching documents [x] `::byFields()` → retrieves documents matching a numeric IN clause [x] `::byFields()` → returns an empty list when no matching documents are found [x] `::byFields()` → retrieves documents matching an inArray condition [x] `::byFields()` → returns an empty list when no documents match an inArray condition [x] `::byContains()` → retrieves matching documents [x] `::byContains()` → retrieves ordered matching documents [x] `::byContains()` → returns an empty list when no documents match [x] `::byJsonPath()` → retrieves matching documents [x] `::byJsonPath()` → retrieves ordered matching documents [x] `::byJsonPath()` → returns an empty list when no documents match [x] `::firstByFields()` → retrieves a matching document [x] `::firstByFields()` → retrieves a document for multiple results [x] `::firstByFields()` → retrieves a document for multiple ordered results [x] `::firstByFields()` → returns None when no documents match [x] `::firstByContains()` → retrieves a matching document [x] `::firstByContains()` → retrieves a document for multiple results [x] `::firstByContains()` → retrieves a document for multiple ordered results [x] `::firstByContains()` → returns None when no documents match [x] `::firstByJsonPath()` → retrieves a matching document [x] `::firstByJsonPath()` → retrieves a document for multiple results [x] `::firstByJsonPath()` → retrieves a document for multiple ordered results [x] `::firstByJsonPath()` → returns None when no documents match /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/JsonTest.php [x] `::all()` → retrieves data [x] `::all()` → sorts data ascending [x] `::all()` → sorts data descending [x] `::all()` → sorts data numerically [x] `::all()` → retrieves empty results [x] `::byId()` → retrieves a document via string ID [x] `::byId()` → retrieves a document via numeric ID [x] `::byId()` → returns "{}" when a document is not found [x] `::byFields()` → retrieves matching documents [x] `::byFields()` → retrieves ordered matching documents [x] `::byFields()` → retrieves documents matching a numeric IN clause [x] `::byFields()` → returns an empty array when no matching documents are found [x] `::byFields()` → retrieves documents matching an inArray condition [x] `::byFields()` → returns an empty array when no documents match an inArray condition [x] `::byContains()` → retrieves matching documents [x] `::byContains()` → retrieves ordered matching documents [x] `::byContains()` → returns an empty array when no documents match [x] `::byJsonPath()` → retrieves matching documents [x] `::byJsonPath()` → retrieves ordered matching documents [x] `::byJsonPath()` → returns an empty array when no documents match [x] `::firstByFields()` → retrieves a matching document [x] `::firstByFields()` → retrieves a document for multiple results [x] `::firstByFields()` → retrieves a document for multiple ordered results [x] `::firstByFields()` → returns "{}" when no documents match [x] `::firstByContains()` → retrieves a matching document [x] `::firstByContains()` → retrieves a document for multiple results [x] `::firstByContains()` → retrieves a document for multiple ordered results [x] `::firstByContains()` → returns "{}" when no documents match [x] `::firstByJsonPath()` → retrieves a matching document [x] `::firstByJsonPath()` → retrieves a document for multiple results [x] `::firstByJsonPath()` → retrieves a document for multiple ordered results [x] `::firstByJsonPath()` → returns "{}" when no documents match [x] `::outputAll()` → outputs data [x] `::outputAll()` → sorts data ascending [x] `::outputAll()` → sorts data descending [x] `::outputAll()` → sorts data numerically [x] `::outputAll()` → outputs empty results [x] `::outputById()` → outputs a document via string ID [x] `::outputById()` → outputs a document via numeric ID [x] `::outputById()` → outputs "{}" when a document is not found [x] `::outputByFields()` → outputs matching documents [x] `::outputByFields()` → outputs ordered matching documents [x] `::outputByFields()` → outputs documents matching a numeric IN clause [x] `::outputByFields()` → outputs an empty array when no matching documents are found [x] `::outputByFields()` → outputs documents matching an inArray condition [x] `::outputByFields()` → outputs an empty array when no documents match an inArray condition [x] `::outputByContains()` → outputs matching documents [x] `::outputByContains()` → outputs ordered matching documents [x] `::outputByContains()` → outputs an empty array when no documents match [x] `::outputByJsonPath()` → outputs matching documents [x] `::outputByJsonPath()` → outputs ordered matching documents [x] `::outputByJsonPath()` → outputs an empty array when no documents match [x] `::outputFirstByFields()` → outputs a matching document [x] `::outputFirstByFields()` → outputs a document for multiple results [x] `::outputFirstByFields()` → outputs a document for multiple ordered results [x] `::outputFirstByFields()` → outputs "{}" when no documents match [x] `::outputFirstByContains()` → outputs a matching document [x] `::outputFirstByContains()` → outputs a document for multiple results [x] `::outputFirstByContains()` → outputs a document for multiple ordered results [x] `::outputFirstByContains()` → outputs "{}" when no documents match [x] `::outputFirstByJsonPath()` → outputs a matching document [x] `::outputFirstByJsonPath()` → outputs a document for multiple results [x] `::outputFirstByJsonPath()` → outputs a document for multiple ordered results [x] `::outputFirstByJsonPath()` → outputs "{}" when no documents match /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/PatchTest.php [x] `::byId()` → updates an existing document [x] `::byId()` → does nothing when a document does not exist [x] `::byFields()` → updates existing documents [x] `::byFields()` → does nothing when no matching documents exist [x] `::byContains()` → updates existing documents [x] `::byContains()` → does nothing when no matching documents exist [x] `::byJsonPath()` → updates existing documents [x] `::byJsonPath()` → does nothing when no matching documents exist /home/summersd/sandbox/pdo-document/tests/Integration/PostgreSQL/RemoveFieldsTest.php [x] `::byId()` → removes fields [x] `::byId()` → does nothing when the field to remove does not exist [x] `::byId()` → does nothing when the document does not exist [x] `::byFields()` → removes fields from matching documents [x] `::byFields()` → does nothing when the field to remove does not exist [x] `::byFields()` → does nothing when no documents match [x] `::byContains()` → removes fields from matching documents [x] `::byContains()` → does nothing when the field to remove does not exist [x] `::byContains()` → does nothing when no documents match [x] `::byJsonPath()` → removes fields from matching documents [x] `::byJsonPath()` → does nothing when the field to remove does not exist [x] `::byJsonPath()` → does nothing when no documents match