%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/codeception/specify/tests/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/codeception/specify/tests/SpecifyTest.php |
<?php use PHPUnit\Framework\IncompleteTestError; class SpecifyTest extends SpecifyUnitTest { /** * @specify */ protected $user; /** * @specify */ protected $a; /** * @specify */ private $private = false; /** * not cloned */ protected $b; public function testUserCanChangeName() { $this->user = new User(); $this->user->name = 'davert'; $this->specify("i can change my name", function() { $this->user->name = 'jon'; $this->assertEquals('jon', $this->user->name); }); $this->assertEquals('davert', $this->user->name); try { $this->specify('i can fail here but test goes on', function() { $this->markTestIncomplete(); }); } catch (IncompleteTestError $e) { $this->fail("should not be thrown"); } $this->assertTrue(true); } function testBeforeCallback() { $this->beforeSpecify(function() { $this->user = "davert"; }); $this->specify("user should be davert", function() { $this->assertEquals('davert', $this->user); }); } function testMultiBeforeCallback() { $this->beforeSpecify(function() { $this->user = "davert"; }); $this->beforeSpecify(function() { $this->user .= "jon"; }); $this->specify("user should be davertjon", function() { $this->assertEquals('davertjon', $this->user); }); } function testAfterCallback() { $this->afterSpecify(function() { $this->user = "davert"; }); $this->specify("user should be davert", function() { $this->user = "jon"; }); $this->assertEquals('davert', $this->user); } function testMultiAfterCallback() { $this->afterSpecify(function() { $this->user = "davert"; }); $this->afterSpecify(function() { $this->user .= "jon"; }); $this->specify("user should be davertjon", function() { $this->user = "jon"; }); $this->assertEquals('davertjon', $this->user); } function testCleanSpecifyCallbacks() { $this->afterSpecify(function() { $this->user = "davert"; }); $this->cleanSpecify(); $this->specify("user should be davert", function() { $this->user = "jon"; }); $this->assertNull($this->user); } public function testExamples() { $this->specify('specify may contain examples', function($a, $b) { $this->assertEquals($b, $a*$a); }, ['examples' => [ ['2', '4'], ['3', '9'] ]]); } function testOnlySpecifications() { $this->specify('should be valid'); $this->assertTrue(true); } public function testDeepCopy() { $this->a = new TestOne(); $this->a->prop = new TestOne(); $this->a->prop->prop = 1; $this->specify('nested object can be changed', function() { $this->assertEquals(1, $this->a->prop->prop); $this->a->prop->prop = 2; $this->assertEquals(2, $this->a->prop->prop); }); $this->assertEquals(1, $this->a->prop->prop); } public function testDeepRevert() { $this->specify("user should be jon", function() { $this->user = "jon"; }); $this->specify("user should be davert", function() { $this->user = "davert"; }); $this->a = new TestOne(); $this->a->prop = new TestOne(); $this->a->prop->prop = 1; $this->specify("user should be davert", function() { $this->a->prop->prop = "davert"; }); $this->assertEquals(1, $this->a->prop->prop); } public function testCloneOnlySpecified() { $this->user = "bob"; $this->b = "rob"; $this->specify("user should be jon", function() { $this->user = "jon"; $this->b = 'alice'; }); $this->assertEquals('bob', $this->user); $this->assertEquals('alice', $this->b); } // public function testFail() // { // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // $this->specify('this will fail', function(){ // $this->assertTrue(false); // }); // // // $this->specify('this will fail too', function(){ // $this->assertTrue(true); // }, ['throws' => 'Exception']); // } /** * @Issue https://github.com/Codeception/Specify/issues/6 */ function testPropertyRestore() { $this->a = new testOne(); $this->a->prop = ['hello', 'world']; $this->specify('array contains hello+world', function ($testData) { $this->a->prop = ['bye', 'world']; $this->assertContains($testData, $this->a->prop); }, ['examples' => [ ['bye'], ['world'], ]]); $this->assertEquals(['hello', 'world'], $this->a->prop); $this->assertFalse($this->private); $this->assertTrue($this->getPrivateProperty()); $this->specify('property $private should be restored properly', function() { $this->private = 'i\'m protected'; $this->setPrivateProperty('i\'m private'); $this->assertEquals('i\'m private', $this->getPrivateProperty()); }); $this->assertFalse($this->private); $this->assertTrue($this->getPrivateProperty()); } public function testExamplesIndexInName() { $name = $this->getName(); $this->specify('it appends index of an example to a test case name', function ($idx) use ($name) { $name .= ' | it appends index of an example to a test case name'; $this->assertEquals($name . ' # example ' . $idx, $this->getCurrentSpecifyTest()->getName(false)); }, ['examples' => [ [0, ''], [1, '0'], [2, null], [3, 'bye'], [4, 'world'], ]]); $this->specify('it does not append index to a test case name if there are no examples', function () use ($name) { $name .= ' | it does not append index to a test case name if there are no examples'; $this->assertEquals($name, $this->getCurrentSpecifyTest()->getName(false)); $this->specify('nested specification without examples', function () use ($name) { $this->assertEquals($name . ' nested specification without examples', $this->getCurrentSpecifyTest()->getName(false)); }); $this->specify('nested specification with examples', function () use ($name) { $this->assertEquals($name . ' nested specification with examples # example 0', $this->getCurrentSpecifyTest()->getName(false)); }, ['examples' => [ [null] ]]); }); } public function testNestedSpecify() { $name = $this->getName(); $this->specify('user', function() use ($name) { $name .= ' | user'; $this->specify('nested specification', function () use ($name) { $name .= ' nested specification'; $this->assertEquals($name, $this->getCurrentSpecifyTest()->getName(false)); }); }); } public function testBDDStyle() { $name = $this->getName(); $this->describe('user', function() use ($name) { $name .= ' | user'; $this->it('should be ok', function () use ($name) { $name .= ' should be ok'; $this->assertEquals($name, $this->getCurrentSpecifyTest()->getName(false)); }); $this->should('be ok', function () use ($name) { $name .= ' should be ok'; $this->assertEquals($name, $this->getCurrentSpecifyTest()->getName(false)); }); }); } public function testMockObjectsIsolation() { $mock = $this->createMock(get_class($this)); $mock->expects($this->once())->method('testMockObjectsIsolation'); $mock->testMockObjectsIsolation(); $this->specify('this should not fail', function () { $mock = $this->createMock(get_class($this)); $mock->expects($this->never())->method('testMockObjectsIsolation')->willReturn(null); }); } /** * @dataProvider someData */ public function testSpecifyAndDataProvider($param) { $this->specify('should assert data provider', function () use ($param) { $this->assertGreaterThan(0, $param); }); } /** * @dataProvider someData */ public function testExamplesAndDataProvider($param) { $this->specify('should assert data provider', function ($example) use ($param) { $this->assertGreaterThanOrEqual(5, $param + $example); }, ['examples' => [[4], [7], [5]]]); } public function someData() { return [[1], [2]]; } } class TestOne { /** @specify */ public $prop; } class User { public $name; }