From 29ee79c645b8dda41a13bdfd326797c1a243abfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sat, 8 Nov 2014 00:40:00 +0100 Subject: [PATCH] create first tests on history file --- Entity/Person.php | 2 +- Tests/Controller/HistoryControllerTest.php | 182 --------------------- Tests/Controller/PersonControllerTest.php | 4 +- Tests/Entity/HistoryFileTest.php | 103 ++++++++++++ Tests/Entity/PersonTest.php | 152 +++++++++++++++++ Tests/bootstrap.php | 8 + phpunit.xml.dist | 23 +++ 7 files changed, 288 insertions(+), 186 deletions(-) delete mode 100644 Tests/Controller/HistoryControllerTest.php create mode 100644 Tests/Entity/HistoryFileTest.php create mode 100644 Tests/Entity/PersonTest.php create mode 100644 Tests/bootstrap.php create mode 100644 phpunit.xml.dist diff --git a/Entity/Person.php b/Entity/Person.php index 947963c9e..aa546d364 100644 --- a/Entity/Person.php +++ b/Entity/Person.php @@ -84,7 +84,7 @@ class Person { $opening = new \DateTime(); } - $this->open($opening); + $this->open(new PersonHistoryFile($opening)); } diff --git a/Tests/Controller/HistoryControllerTest.php b/Tests/Controller/HistoryControllerTest.php deleted file mode 100644 index 32d401b31..000000000 --- a/Tests/Controller/HistoryControllerTest.php +++ /dev/null @@ -1,182 +0,0 @@ -setDateClosing($datetime2); - - - $r = $history->isClosingAfterOpening(); - - $this->assertTrue($r); - } - - public function testClosingIsBeforeOpeningConsistency() { - $datetime1 = new \DateTime('tomorrow'); - - - $history = new PersonHistoryFile($datetime1); - - - $datetime2 = new \DateTime('now'); - - $history->setDateClosing($datetime2); - - $this->assertFalse($history->isClosingAfterOpening()); - } - - public function testClosingEqualOpening() { - $datetime = new \DateTime('now'); - - $history = new PersonHistoryFile($datetime); - $history->setDateClosing($datetime); - - $this->assertTrue($history->isClosingAfterOpening()); - } - - public function testIsOpen() { - $history = new PersonHistoryFile(new \DateTime()); - - $this->assertTrue($history->isOpen()); - } - - public function testIsClosed() { - $history = new PersonHistoryFile(new \DateTime()); - - $history->setDateClosing(new \DateTime('tomorrow')); - - $this->assertFalse($history->isOpen()); - } - - public function testHistoryOrderWithUnorderedHistory() { - $d = new \DateTime(); $d->setDate(2013, 2, 1); - $p = new Person($d); - - $e = new \DateTime(); $e->setDate(2013,3,1); - $p->close($e, null); - - $f = new \DateTime(); $f->setDate(2013, 1, 1); - $p->open($f); - - $g = new \DateTime(); $g->setDate(2013, 4, 1); - $p->close($g, null); - - $r = $p->getHistoriesOrdered(); - - $date = $r[0]->getDateOpening()->format('Y-m-d'); - - - $this->assertEquals($date, '2013-01-01'); - } - - - public function testHistoryOrderSameDateOpening() { - $d = new \DateTime(); $d->setDate(2013, 2, 1); - $p = new Person($d); - - $e = new \DateTime(); $e->setDate(2013, 3, 1); - $p->close($e, null); - - $f = new \DateTime(); $f->setDate(2013, 2, 1); - $p->open($f); - - $g = new \DateTime(); $g->setDate(2013, 4, 1); - $p->close($g, null); - - $r = $p->getHistoriesOrdered(); - - $date = $r[0]->getDateClosing()->format('Y-m-d'); - - - $this->assertEquals($date, '2013-03-01'); - } - - public function testDateCoveringWithCoveringHistory() { - $d = new \DateTime(); $d->setDate(2013, 2, 1); - $p = new Person($d); - - $e = new \DateTime(); $e->setDate(2013,3,1); - $p->close($e, null); - - $f = new \DateTime(); $f->setDate(2013, 1, 1); - $p->open($f); - - $g = new \DateTime(); $g->setDate(2013, 4, 1); - $p->close($g, null); - - $r = $p->checkHistoryIsNotCovering(); - - $this->assertEquals($r['result'], Person::ERROR_OPENING_IS_INSIDE_CLOSING); - } - - - - public function testNotOpenAFileReOpenedLater() { - $d = new \DateTime(); $d->setDate(2013, 2, 1); - $p = new Person($d); - - $e = new \DateTime(); $e->setDate(2013, 3, 1); - $p->close($e, null); - - $f = new \DateTime(); $f->setDate(2013, 1, 1); - $p->open($f); - - - - $r = $p->checkHistoryIsNotCovering(); - - var_dump($r); - - $this->assertEquals($r['result'], Person::ERROR_OPENING_NOT_CLOSED_IS_BEFORE_NEW_LINE); - } - - - - - - - public function testOrder() { - $d = new \DateTime(); $d->setDate(2013, 2, 1); - $g = new \DateTime(); $g->setDate(2013, 4, 1); - $f = new \DateTime(); $f->setDate(2013, 1, 1); - $e = new \DateTime(); $e->setDate(2013,3,1); - - $a = array($d, $g, $f, $e); - - - usort($a, function($a, $b) { - if ($a === $b) { - return 0; - } - - if ($a < $b) { - return -1; - } else { - return 1; - } - }); - - - $date = $a[0]->format('Y-m-d'); - - $this->assertEquals($date, '2013-01-01'); - - } - - - -} diff --git a/Tests/Controller/PersonControllerTest.php b/Tests/Controller/PersonControllerTest.php index b914270ac..0154ce5d8 100644 --- a/Tests/Controller/PersonControllerTest.php +++ b/Tests/Controller/PersonControllerTest.php @@ -6,11 +6,9 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class PersonControllerTest extends WebTestCase { - public function testSee() + public function testFoo() { - $client = static::createClient(); - $crawler = $client->request('GET', '/see'); } } diff --git a/Tests/Entity/HistoryFileTest.php b/Tests/Entity/HistoryFileTest.php new file mode 100644 index 000000000..095a3cf6a --- /dev/null +++ b/Tests/Entity/HistoryFileTest.php @@ -0,0 +1,103 @@ +setDateClosing($datetime2); + + + $r = $history->isClosingAfterOpening(); + + $this->assertTrue($r); + } + + public function testClosingIsBeforeOpeningConsistency() { + $datetime1 = new \DateTime('tomorrow'); + + + $history = new PersonHistoryFile($datetime1); + + + $datetime2 = new \DateTime('now'); + + $history->setDateClosing($datetime2); + + $this->assertFalse($history->isClosingAfterOpening()); + } + + public function testClosingEqualOpening() { + $datetime = new \DateTime('now'); + + $history = new PersonHistoryFile($datetime); + $history->setDateClosing($datetime); + + $this->assertTrue($history->isClosingAfterOpening()); + } + + public function testIsOpen() { + $history = new PersonHistoryFile(new \DateTime()); + + $this->assertTrue($history->isOpen()); + } + + public function testIsClosed() { + $history = new PersonHistoryFile(new \DateTime()); + + $history->setDateClosing(new \DateTime('tomorrow')); + + $this->assertFalse($history->isOpen()); + } + + + + + + + + /** + * This test seems only to test ordering datetime... Maybe delete ? + */ + public function testOrder() { + $d = new \DateTime(); $d->setDate(2013, 2, 1); + $g = new \DateTime(); $g->setDate(2013, 4, 1); + $f = new \DateTime(); $f->setDate(2013, 1, 1); + $e = new \DateTime(); $e->setDate(2013,3,1); + + $a = array($d, $g, $f, $e); + + + usort($a, function($a, $b) { + if ($a === $b) { + return 0; + } + + if ($a < $b) { + return -1; + } else { + return 1; + } + }); + + + $date = $a[0]->format('Y-m-d'); + + $this->assertEquals($date, '2013-01-01'); + + } + + + +} diff --git a/Tests/Entity/PersonTest.php b/Tests/Entity/PersonTest.php new file mode 100644 index 000000000..f2b721af9 --- /dev/null +++ b/Tests/Entity/PersonTest.php @@ -0,0 +1,152 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace Chill\PersonBundle\Tests\Entity; + +use Chill\PersonBundle\Entity\Person; +use Chill\PersonBundle\Entity\PersonHistoryFile; + +/** + * Unit tests on person + * + * @author Julien Fastré + */ +class PersonTest extends \PHPUnit_Framework_TestCase +{ + public function testGetCurrentHistory() + { + $d = new \DateTime('yesterday'); + $p = new Person($d); + + $history = $p->getCurrentHistory(); + + $this->assertInstanceOf('Chill\PersonBundle\Entity\PersonHistoryFile', $history); + $this->assertTrue($history->isOpen()); + $this->assertEquals($d, $history->getDateOpening()); + + //close and test + $history->setDateClosing(new \DateTime('tomorrow')); + + $shouldBeNull = $p->getCurrentHistory(); + $this->assertNull($shouldBeNull); + + } + + public function testHistoryOrderWithUnorderedHistory() { + $d = new \DateTime(); + $d->setDate(2013, 2, 1); + $p = new Person($d); + + $e = new \DateTime(); + $e->setDate(2013, 3, 1); + $history = $p->getCurrentHistory()->setDateClosing($e); + $p->close($history); + + $f = new \DateTime(); + $f->setDate(2013, 1, 1); + $p->open(new PersonHistoryFile($f)); + + $g = new \DateTime(); + $g->setDate(2013, 4, 1); + $history = $p->getCurrentHistory()->setDateClosing($g); + $p->close($history); + + $r = $p->getHistoriesOrdered(); + + $date = $r[0]->getDateOpening()->format('Y-m-d'); + + + $this->assertEquals($date, '2013-01-01'); + } + + + public function testHistoryOrderSameDateOpening() { + $d = new \DateTime(); + $d->setDate(2013, 2, 1); + $p = new Person($d); + + $e = new \DateTime(); + $e->setDate(2013, 3, 1); + $history = $p->getCurrentHistory()->setDateClosing($e); + $p->close($history); + + $f = new \DateTime(); + $f->setDate(2013, 2, 1); + $p->open(new PersonHistoryFile($f)); + + $g = new \DateTime(); + $g->setDate(2013, 4, 1); + $history = $p->getCurrentHistory()->setDateClosing($g); + $p->close($history); + + $r = $p->getHistoriesOrdered(); + + $date = $r[0]->getDateClosing()->format('Y-m-d'); + + + $this->assertEquals($date, '2013-03-01'); + } + + public function testDateCoveringWithCoveringHistory() { + $d = new \DateTime(); + $d->setDate(2013, 2, 1); + $p = new Person($d); + + $e = new \DateTime(); + $e->setDate(2013, 3, 1); + $history = $p->getCurrentHistory()->setDateClosing($e); + $p->close($history); + + $f = new \DateTime(); + $f->setDate(2013, 1, 1); + $p->open(new PersonHistoryFile($f)); + + $g = new \DateTime(); + $g->setDate(2013, 4, 1); + $history = $p->getCurrentHistory()->setDateClosing($g); + $p->close($history); + + $r = $p->checkHistoryIsNotCovering(); + + $this->assertEquals($r['result'], Person::ERROR_OPENING_IS_INSIDE_CLOSING); + } + + + + public function testNotOpenAFileReOpenedLater() { + $d = new \DateTime(); + $d->setDate(2013, 2, 1); + $p = new Person($d); + + $e = new \DateTime(); + $e->setDate(2013, 3, 1); + $history = $p->getCurrentHistory()->setDateClosing($e); + $p->close($history); + + $f = new \DateTime(); + $f->setDate(2013, 1, 1); + $p->open(new PersonHistoryFile($f)); + + + $r = $p->checkHistoryIsNotCovering(); + + $this->assertEquals($r['result'], Person::ERROR_OPENING_NOT_CLOSED_IS_BEFORE_NEW_LINE); + } +} diff --git a/Tests/bootstrap.php b/Tests/bootstrap.php new file mode 100644 index 000000000..9211155e5 --- /dev/null +++ b/Tests/bootstrap.php @@ -0,0 +1,8 @@ + + + + + + + ./Tests + + + + + ./ + + ./Resources + ./Tests + ./vendor + + + + + + + \ No newline at end of file