public function testSquirrelQueryBasicFindWithSoftDeletes() { // Test simple case, User::find(1), no softdeletes $whereData = [['type' => 'Null', 'column' => 'users.deleted_at', 'boolean' => 'and'], ['type' => 'Basic', 'column' => 'users.id', 'operator' => '=', 'value' => 1, 'boolean' => 'and']]; $deletedAtColumnName = 'deleted_at'; $query = new SquirrelQuery($whereData, $deletedAtColumnName); $this->assertCount(2, $query->wheres); $this->assertEquals("id", $query->uniqueKeyString()); $cacheKeys = $query->cacheKeys(); $this->assertCount(1, $cacheKeys); $this->assertEquals('a:1:{s:2:"id";s:1:"1";}', $cacheKeys[0]); $cacheKeys = $query->cacheKeys("Squirrel::App\\User::"); $this->assertEquals('Squirrel::App\\User::a:1:{s:2:"id";s:1:"1";}', $cacheKeys[0]); $keysWithValues = $query->keysWithValues(); $this->assertCount(1, $keysWithValues); $this->assertArrayHasKey('id', $keysWithValues); $this->assertEquals(1, $keysWithValues['id']); $deletedAtObject = $query->deletedAtObject(); $this->assertNotEmpty($deletedAtObject); $this->assertEquals("and", $deletedAtObject->boolean); $this->assertEquals("deleted_at", $deletedAtObject->column); $this->assertEquals("Is", $deletedAtObject->operator); $this->assertEquals("Null", $deletedAtObject->value); $this->assertEquals("Null", $deletedAtObject->type); $fields = $query->allExcludingDeletedAt(); $this->assertCount(1, $fields); $this->assertEquals("and", $fields[0]->boolean); $this->assertEquals("id", $fields[0]->column); $this->assertEquals("=", $fields[0]->operator); $this->assertEquals("1", $fields[0]->value); $this->assertEquals("Basic", $fields[0]->type); $first = $query->firstWithColumnName("deleted_at"); $this->assertNotEmpty($first); $this->assertEquals("deleted_at", $first->column); $this->assertEquals("Is", $first->operator); $this->assertEquals("Null", $first->value); $first = $query->firstWithColumnName("id"); $this->assertEquals("id", $first->column); $this->assertEquals("=", $first->operator); $this->assertEquals("1", $first->value); $this->assertEmpty($query->inStatement()); $this->assertTrue($query->isCacheable()); }