Advertisement
Guest User

hax test

a guest
Mar 2nd, 2014
827
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.86 KB | None | 0 0
  1. <?php
  2. namespace common\tests\unit\models;
  3.  
  4. // use \common\tests\unit\TestCase; # я, наверное, не до конца разобрался в тонкостях автозагрузки новой yii, но codeception у меня отказался подхватываться
  5.  
  6. class ProductModelTest extends \PHPUnit_Framework_TestCase
  7. {
  8.     public function testGet()
  9.     {
  10.         $model = new \common\models\ProductModel;
  11.         foreach (array('string', 0, false) as $item) { // тест написан не лучше модели - все это должно по=хорошему делаться через @expectedException и @dataProvider
  12.             try {
  13.                 $model->get($item);
  14.                 $this->fail('Exception was expected for '.print_r($item, true).' input');
  15.             } catch (\InvalidArgumentException $e) {} // т.к. модель и должна в таком случае выдавать исключение, то все в порядке.
  16.             foreach (range(1,3) as $id) {
  17.                 $product = $model->get($id);
  18.                 $this->assertSame($product['id'], $id); // по-хорошему здесь уже должны вступать фикстуры и делаться полное сравнение.
  19.             }
  20.             $this->assertFalse($model->get(4)); // такого тоже в реальном тесте быть не должно, т.к. нет ничего плохого в продукте c id = 4. По=-орошему надо искать максимальный id и потом смотреть выхлоп для id, превышающий его.
  21.         }
  22.     }
  23.     public function testGetAll() // это тоже должно делаться через фикстуры
  24.     {
  25.         $mockProducts =  array(
  26.             array('id' => 1, 'title' => 'CodeIgniter', 'description' => 'Quite popular framework from previous decade',),
  27.             array('id' => 2, 'title' => 'Symfony', 'description' => 'A framework that promotes organizing everything in reusable bundles',),
  28.             array('id' => 3, 'title' => 'Yii', 'description' => 'Framework that attracts developers by it\'s simplicity',),
  29.         );
  30.         $model = new \common\models\ProductModel;
  31.         $this->assertSame($model->getAll(), $mockProducts);
  32.     }
  33.     public function existsDataProvider()
  34.     {
  35.         return array(
  36.             array(0, false,),
  37.             array(1, true,),
  38.             array(2, true,),
  39.             array(3, true,),
  40.             array(4, false,),
  41.         );
  42.     }
  43.     /**
  44.       * @dataProvider existsDataProvider
  45.           это - небольшая магия PHPUnit
  46.       */
  47.     public function testProductExists($id, $expectedResult)
  48.     {
  49.         $model = new \common\models\ProductModel;
  50.         $this->assertSame($model->productExists($id), $expectedResult);
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement