Ejemplo n.º 1
0
 public function testDeferredBinding()
 {
     $sessionKey = uniqid('session_key', true);
     Model::unguard();
     $author = Author::create(['name' => 'Stevie']);
     $event = EventLog::create(['action' => "user-created"]);
     Model::reguard();
     $eventId = $event->id;
     // Deferred add
     $author->event_log()->add($event, $sessionKey);
     $this->assertNull($event->related_id);
     $this->assertEmpty($author->event_log);
     $this->assertEquals(0, $author->event_log()->count());
     $this->assertEquals(1, $author->event_log()->withDeferred($sessionKey)->count());
     // Commit deferred
     $author->save(null, $sessionKey);
     $event = EventLog::find($eventId);
     $this->assertEquals(1, $author->event_log()->count());
     $this->assertEquals($author->id, $event->related_id);
     $this->assertEquals(['user-created'], $author->event_log->lists('action'));
     // New session
     $sessionKey = uniqid('session_key', true);
     // Deferred remove
     $author->event_log()->remove($event, $sessionKey);
     $this->assertEquals(1, $author->event_log()->count());
     $this->assertEquals(0, $author->event_log()->withDeferred($sessionKey)->count());
     $this->assertEquals($author->id, $event->related_id);
     $this->assertEquals(['user-created'], $author->event_log->lists('action'));
     // Commit deferred (model is deleted as per definition)
     $author->save(null, $sessionKey);
     $event = EventLog::find($eventId);
     $this->assertEquals(0, $author->event_log()->count());
     $this->assertNull($event);
     $this->assertEmpty($author->event_log);
 }
Ejemplo n.º 2
0
 public function testSetRelationValue()
 {
     Model::unguard();
     $author = Author::create(['name' => 'Stevie', 'email' => '*****@*****.**']);
     $post1 = Post::create(['title' => "First post", 'description' => "Yay!!"]);
     $post2 = Post::make(['title' => "Second post", 'description' => "Woohoo!!"]);
     $event = EventLog::create(['action' => "user-created"]);
     Model::reguard();
     // Set by Model object
     $event->related = $author;
     $event->save();
     $this->assertEquals($author->id, $event->related_id);
     $this->assertEquals('Stevie', $event->related->name);
     // Set by primary key
     $event->related = [$post1->id, get_class($post1)];
     $this->assertEquals($post1->id, $event->related_id);
     $this->assertEquals('First post', $event->related->title);
     // Nullify
     $event->related = null;
     $this->assertNull($event->related_id);
     $this->assertNull($event->related);
     // Deferred in memory
     $event->related = $post2;
     $this->assertEquals('Second post', $event->related->title);
     $this->assertNull($event->related_id);
     $event->save();
     $this->assertEquals($post2->id, $event->related_id);
 }