/** * @coversNothing */ public function testRels() { $user = User::find(1); $user->name = 'New Name'; $user->isBlocked = true; $user->object = new SaveableObject(); $user->object->setVar('value'); $address = $user->getAddress(); $address->location = 'Somewhere else'; $address->zipCode = '1234'; $posts = $user->getPosts(); $post = $posts->getFirst(); $post->body = 'Changed Body'; $post = new Post(['title' => 'new post', 'body' => 'Lorem Ipsum', 'price' => 123.23]); $posts->add($post); $tags = Tag::whereIn('id', [1, 2])->load(); $post->getTags()->addModels($tags); $this->assertQueries(['SELECT `User`.* FROM `User` WHERE (`id` = 1) AND (`User`.`deletedAt` IS NULL) LIMIT 1', 'SELECT `Address`.* FROM `Address` WHERE (`id` IN (1))', 'SELECT `Post`.`class`, `Post`.* FROM `Post` WHERE (`userId` IN (1))', 'SELECT `Tag`.* FROM `Tag` WHERE (`id` IN (1, 2))']); User::save($user); $this->assertQueries(['SELECT `User`.* FROM `User` WHERE (`id` = 1) AND (`User`.`deletedAt` IS NULL) LIMIT 1', 'SELECT `Address`.* FROM `Address` WHERE (`id` IN (1))', 'SELECT `Post`.`class`, `Post`.* FROM `Post` WHERE (`userId` IN (1))', 'SELECT `Tag`.* FROM `Tag` WHERE (`id` IN (1, 2))', 'INSERT INTO `Post` (`id`, `title`, `body`, `price`, `tags`, `createdAt`, `updatedAt`, `publishedAt`, `userId`, `class`) VALUES (NULL, "new post", "Lorem Ipsum", "123.23", NULL, NULL, NULL, NULL, NULL, "Harp\\Harp\\Test\\TestModel\\Post")', 'INSERT INTO `PostTag` (`id`, `postId`, `tagId`) VALUES (NULL, NULL, 1), (NULL, NULL, 2)', 'UPDATE `User` SET `name` = "New Name", `isBlocked` = 1, `object` = "C:41:"Harp\\Harp\\Test\\Integration\\SaveableObject":22:{a:1:{i:0;s:5:"value";}}" WHERE (`id` = 1)', 'UPDATE `Address` SET `zipCode` = "1234", `location` = "Somewhere else" WHERE (`id` = 1)', 'UPDATE `Post` SET `body` = CASE `id` WHEN 1 THEN "Changed Body" ELSE `body` END, `userId` = CASE `id` WHEN 5 THEN 1 ELSE `userId` END WHERE (`id` IN (1, 5))', 'UPDATE `PostTag` SET `postId` = CASE `id` WHEN 4 THEN "5" WHEN 5 THEN "5" ELSE `postId` END WHERE (`id` IN (4, 5))']); Container::clear(); $user = User::find(1); $this->assertEquals('New Name', $user->name); $this->assertEquals('value', $user->object->getVar()); $this->assertEquals(true, $user->isBlocked); $address = $user->getAddress(); $this->assertEquals('Somewhere else', $address->location); $this->assertEquals('1234', $address->zipCode); $posts = $user->getPosts(); $post = $posts->getFirst(); $this->assertEquals('Changed Body', $post->body); $newPost = Post::where('title', 'new post')->loadFirst(); $this->assertTrue($posts->has($newPost)); $this->assertEquals([1, 2], $newPost->getTags()->get()->getIds()); }
/** * @coversNothing */ public function testJoinRels() { $users = User::findAll()->joinRels(['posts' => 'tags'])->group('User.id')->load(); $expected = User::find(1); $this->assertSame($expected, $users->getFirst()); $addresses = Address::findAll()->joinRels(['user' => 'posts'])->load(); $expected = Address::find(1); $this->assertSame($expected, $addresses->getFirst()); $this->assertQueries(['SELECT `User`.* FROM `User` JOIN `Post` AS `posts` ON `posts`.`userId` = `User`.`id` JOIN `PostTag` AS `postTags` ON `postTags`.`postId` = `posts`.`id` JOIN `Tag` AS `tags` ON `tags`.`id` = `postTags`.`tagId` WHERE (`User`.`deletedAt` IS NULL) GROUP BY `User`.`id`', 'SELECT `User`.* FROM `User` WHERE (`id` = 1) AND (`User`.`deletedAt` IS NULL) LIMIT 1', 'SELECT `Address`.* FROM `Address` JOIN `User` AS `user` ON `user`.`addressId` = `Address`.`id` AND `user`.`deletedAt` IS NULL JOIN `Post` AS `posts` ON `posts`.`userId` = `user`.`id`', 'SELECT `Address`.* FROM `Address` WHERE (`id` = 1) LIMIT 1']); }
public function testTest() { $user = User::find(1); $this->assertEmpty($user->getUnmapped()); $user->unmappedField = 'some value'; $user->otherProp = 'val2'; $this->assertEquals('some value', $user->unmappedField); $expected = ['unmappedField' => 'some value', 'otherProp' => 'val2']; $this->assertEquals($expected, $user->getUnmapped()); }
public function testRels() { $user = User::find(1231421); $this->assertInstanceOf('Harp\\Harp\\Test\\TestModel\\User', $user); $this->assertTrue($user->isVoid()); $address = $user->getAddress(); $this->assertInstanceOf('Harp\\Harp\\Test\\TestModel\\Address', $address); $this->assertTrue($address->isVoid()); $post = $user->getPosts()->getFirst(); $this->assertInstanceOf('Harp\\Harp\\Test\\TestModel\\Post', $post); $this->assertTrue($post->isVoid()); $user = $post->getUser(); $this->assertInstanceOf('Harp\\Harp\\Test\\TestModel\\User', $user); $this->assertTrue($user->isVoid()); }
public function testTest() { $user1 = User::find(1); $address1 = $user1->getAddress(); $post1 = $user1->getPosts()->getFirst(); $user2 = User::find(1); $address2 = $user2->getAddress(); $post2 = $user2->getPosts()->getFirst(); $address3 = Address::find(1); $post3 = Post::find(1); $this->assertSame($user1, $user2); $this->assertSame($address1, $address2); $this->assertSame($post1, $post2); $this->assertSame($address1, $address3); $this->assertSame($post1, $post3); }
public function testTest() { $user = User::find(1); $name = $user->name; $this->assertFalse($user->isChanged()); $this->assertEmpty($user->getChanges()); $user->name = 'changed'; $user->isBlocked = false; $this->assertTrue($user->isChanged()); $this->assertTrue($user->hasChange('name')); $this->assertFalse($user->hasChange('isBlocked')); $this->assertEquals($name, $user->getOriginal('name')); $this->assertEquals(false, $user->getOriginal('isBlocked')); $this->assertEquals(['name' => 'changed'], $user->getChanges()); $user->name = $name; $user->isBlocked = true; $this->assertTrue($user->isChanged()); $this->assertFalse($user->hasChange('name')); $this->assertTrue($user->hasChange('isBlocked')); $this->assertEquals(['isBlocked' => true], $user->getChanges()); $user->isBlocked = false; $this->assertFalse($user->isChanged()); $this->assertEmpty($user->getChanges()); }
public function testTest() { $user1 = User::find(1); $posts = $user1->getPosts(); $this->assertInstanceOf('Harp\\Harp\\Test\\TestModel\\LinkManyPosts', $posts); }
/** * @covers ::getLink */ public function testGetLink() { $user = User::find(1); $link = $user->getLink('address'); $this->assertSame($user, $link->getModel()); $this->assertSame(Address::getRepo(), $link->getRel()->getRepo()); }