diff --git a/laravel/session/payload.php b/laravel/session/payload.php index 1b3c10cb..ba573836 100644 --- a/laravel/session/payload.php +++ b/laravel/session/payload.php @@ -1,7 +1,7 @@ getDummyData()); + + $this->assertTrue($payload->has('name')); + $this->assertTrue($payload->has('age')); + $this->assertTrue($payload->has('gender')); + + $this->assertFalse($payload->has('something')); + $this->assertFalse($payload->has('id')); + $this->assertFalse($payload->has('last_activity')); + } + + public function testGetMethodReturnsItemFromPayload() + { + $payload = new Payload($this->getDummyData()); + + $this->assertEquals($payload->get('name'), 'Taylor'); + $this->assertEquals($payload->get('age'), 25); + $this->assertEquals($payload->get('gender'), 'male'); + } + + public function testGetMethodReturnsDefaultWhenItemDoesntExist() + { + $payload = new Payload($this->getDummyData()); + + $this->assertNull($payload->get('something')); + $this->assertEquals('Taylor', $payload->get('something', 'Taylor')); + $this->assertEquals('Taylor', $payload->get('something', function() {return 'Taylor';})); + } + + public function testPutMethodAddsToPayload() + { + $payload = new Payload($this->getDummyData()); + + $payload->put('name', 'Weldon'); + $payload->put('workmate', 'Joe'); + + $this->assertEquals($payload->session['data']['name'], 'Weldon'); + $this->assertEquals($payload->session['data']['workmate'], 'Joe'); + $this->assertInstanceOf('Laravel\\Session\\Payload', $payload->put('something', 'test')); + } + + public function testFlashMethodPutsItemInFlashData() + { + $payload = new Payload(array()); + + $payload->flash('name', 'Taylor'); + + $this->assertEquals($payload->session['data'][':new:name'], 'Taylor'); + $this->assertInstanceOf('Laravel\\Session\\Payload', $payload->flash('something', 'test')); + } + + public function testReflashKeepsAllSessionData() + { + $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25))); + + $payload->reflash(); + + $this->assertTrue(isset($payload->session['data'][':new:name'])); + $this->assertTrue(isset($payload->session['data'][':new:age'])); + $this->assertFalse(isset($payload->session['data'][':old:name'])); + $this->assertFalse(isset($payload->session['data'][':old:age'])); + } + + public function testKeepMethodKeepsSpecificSessionData() + { + $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25))); + + $payload->keep('name'); + + $this->assertTrue(isset($payload->session['data'][':new:name'])); + $this->assertFalse(isset($payload->session['data'][':old:name'])); + + $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25))); + + $payload->keep(array('name', 'age')); + + $this->assertTrue(isset($payload->session['data'][':new:name'])); + $this->assertTrue(isset($payload->session['data'][':new:age'])); + $this->assertFalse(isset($payload->session['data'][':old:name'])); + $this->assertFalse(isset($payload->session['data'][':old:age'])); + } + + public function testFlushMethodShouldClearPayloadData() + { + $payload = new Payload(array('data' => array('name' => 'Taylor'))); + + $payload->flush(); + + $this->assertEquals(count($payload->session['data']), 0); + } + + public function testRegenerateMethodSetsNewSessionID() + { + $payload = new Payload(array('id' => 'something')); + + $payload->regenerate(); + + $this->assertEquals(strlen($payload->session['id']), 40); + } + + public function testAgeMethodSetsLastActivityTime() + { + $data = $this->getDummyData(); + + unset($data['last_activity']); + + $payload = new Payload($data); + + $payload->age(); + + $this->assertTrue(isset($payload->session['last_activity'])); + } + + public function testAgeMethodAgesAllFlashData() + { + $payload = new Payload($this->getDummyData()); + + $payload->age(); + + $this->assertTrue(isset($payload->session['data'][':old:age'])); + $this->assertFalse(isset($payload->session['data'][':old:gender'])); + } + + public function testAgeMethodReturnsSessionArray() + { + $payload = new Payload($this->getDummyData()); + + $age = $payload->age(); + + $this->assertEquals($age['id'], 'something'); + } + + // --------------------------------------------------------------------- + // Support Functions + // --------------------------------------------------------------------- + + public function getDummyData() + { + return array('id' => 'something', 'last_activity' => time(), 'data' => array( + 'name' => 'Taylor', + ':new:age' => 25, + ':old:gender' => 'male', + 'state' => 'Oregon', + )); + } + +} \ No newline at end of file