Browse Source

added session payload tests.

Taylor Otwell 13 years ago
parent
commit
1b75302d8c
2 changed files with 156 additions and 1 deletions
  1. 1 1
      laravel/session/payload.php
  2. 155 0
      tests/Session/SessionPayloadTest.php

+ 1 - 1
laravel/session/payload.php

@@ -1,7 +1,7 @@
 <?php namespace Laravel\Session;
 
+use Closure;
 use Laravel\Str;
-use Laravel\Closure;
 
 class Payload {
 

+ 155 - 0
tests/Session/SessionPayloadTest.php

@@ -0,0 +1,155 @@
+<?php
+
+use Laravel\Session\Payload;
+
+class SessionPayloadTest extends PHPUnit_Framework_TestCase {
+
+	public function testHasMethodIndicatesIfItemExistsInPayload()
+	{
+		$payload = new Payload($this->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',
+		));
+	}
+
+}