Пример #1
0
 public function testVerifyNot()
 {
     verify_not(false);
     verify_not(null);
     verify_not(array());
 }
Пример #2
0
 /**
  * Tests the View setters and getters
  *
  * @author Kamil Skowron <*****@*****.**>
  * @since  2014-05-28
  */
 public function testSettersAndGetters()
 {
     $this->specify('The View setters and getters does not work as expected', function () {
         $view = new Simple();
         $view->foo = 'bar';
         expect('bar')->equals($view->foo);
         expect($view)->equals($view->setVar('foo1', 'bar1'));
         expect('bar1')->equals($view->getVar('foo1'));
         $expectedVars = array('foo2' => 'bar2', 'foo3' => 'bar3');
         expect($view)->equals($view->setVars($expectedVars));
         expect('bar2')->equals($view->foo2);
         expect('bar3')->equals($view->foo3);
         expect($view)->equals($view->setVars($expectedVars, false));
         expect($view)->equals($view->setParamToView('foo4', 'bar4'));
         $expectedParamsToView = ['foo2' => 'bar2', 'foo3' => 'bar3', 'foo4' => 'bar4'];
         expect($expectedParamsToView)->equals($view->getParamsToView());
         expect($view)->equals($view->setContent('<h1>hello</h1>'));
         expect('<h1>hello</h1>')->equals($view->getContent());
         $view->setViewsDir(PATH_DATA . 'views' . DIRECTORY_SEPARATOR);
         expect(PATH_DATA . 'views' . DIRECTORY_SEPARATOR)->equals($view->getViewsDir());
         $expectedCacheOptions = ['lifetime' => 86400, 'key' => 'simple-cache'];
         verify_not($view->getCacheOptions());
         expect($view)->equals($view->setCacheOptions($expectedCacheOptions));
         expect($expectedCacheOptions)->equals($view->getCacheOptions());
     });
 }
Пример #3
0
 public function testSmokeRedisToDb()
 {
     //$this->markTestSkipped();
     $master = $this->masterRedisModel;
     $slave = $this->slaveModel;
     $config = ['class' => ArSyncBehavior::className(), 'slaveModel' => DbSlave::className(), 'slaveScenario' => 'sync', 'fieldMap' => ['id' => 'id', 'title' => 'name', 'foo' => 'foo', 'bar' => 'bar', 'baz' => function ($master) {
         return $master->baz * 2;
     }]];
     $this->specify('testAutoSync', function () use($master, $slave, $config) {
         $this->clearModel($slave);
         $this->clearModel($master);
         $master->attachBehavior('ArSyncBehavior', $config);
         $master->setIsNewRecord(true);
         verify_not($slave::findOne(15), 'slave record not exxists');
         $master->setAttributes(['id' => 15, 'name' => 'lala', 'foo' => 'bar', 'baz' => 10], false);
         verify_that($master->save());
         $slaveSync = $slave::findOne(15);
         verify_that($slaveSync, 'slave model appear ');
         /**@var Verify* */
         verify('fieldMap success', $slaveSync->title)->equals('lala');
         verify('default values success', $slaveSync->bar)->equals('masterdefault');
         verify('closured values success', $slaveSync->baz)->equals(20);
     });
     $this->specify('test update record', function () use($master, $slave, $config) {
         $model = $master::findOne(15);
         verify_that($model);
         $model->attachBehavior('ArSyncBehavior', $config);
         $model->name = 'UpdatedName';
         verify_that($model->update());
         $slaveSync = $slave::findOne(15);
         verify('slave record updated', $slaveSync->title)->equals('UpdatedName');
         $model->delete();
         verify_not($slave::findOne(15), 'after delete master, slave removed');
     });
     $this->specify('testManualSync', function () use($master, $slave, $config) {
         $this->clearModel($slave);
         $this->clearModel($master);
         verify('slave data empty', $slave::find()->count())->equals(0);
         $master->detachBehavior('ArSyncBehavior');
         verify_not($master->hasMethod('syncAll'), 'behavior not attached');
         //fill some data
         /**@var RedisMaster $model */
         $ids = [];
         for ($i = 0; $i < 5; $i++) {
             $model = new $master();
             $model->setAttributes(['name' => 'foo' . $i, 'foo' => 'bar' . $i, 'baz' => 10 + $i]);
             verify_that($model->save());
             $ids[] = $model->getPrimaryKey();
         }
         verify('slave data empty yet, because behavior not attached', $slave::find()->count())->equals(0);
         $master->attachBehavior('ArSyncBehavior', $config);
         $master->syncAll();
         verify('data synced', $slave::find()->where([$slave->primaryKey()[0] => $ids])->count())->equals(5);
         //save not valid data
         $model = new $master();
         $model->attachBehavior('ArSyncBehavior', $config);
         $model->setAttributes(['name' => 'baddata'], false);
         verify_not($model->save());
         verify('slave not changed', $slave::find()->count())->equals(5);
         $master->syncAll(true);
         verify('slave not changed', $slave::find()->count())->equals(5);
         $models = $master::findAll($ids);
         foreach ($models as $model) {
             if ($model->baz == 10) {
                 verify_that($model->delete() !== false);
             } else {
                 $model->name = str_replace('foo', 'boo', $model->name);
                 $model->updateAttributes(['name']);
             }
         }
         verify('slave not changed', $slave::find()->count())->equals(5);
         $master->syncAll();
         verify('slave count changed', $slave::find()->count())->equals(4);
         $slaves = $slave::find()->where(['in', $slave->primaryKey(), $ids])->all();
         foreach ($slaves as $updSlave) {
             verify('slave title changed', $updSlave->title)->contains('boo');
         }
         $master->clearSlave();
         verify('slave must be empty', $slave::find()->count())->equals(0);
     });
     $this->specify('test two-way binding', function () use($master, $slave, $config) {
         $this->clearModel($master);
         $this->clearModel($slave);
         $slaveConfig = ['class' => ArSyncBehavior::className(), 'slaveModel' => RedisMaster::className(), 'saveScenarios' => ['default'], 'deleteScenarios' => [], 'slaveScenario' => 'sync', 'fieldMap' => ['foo' => 'foo', 'bar' => 'bar']];
         Event::on(RedisMaster::className(), ActiveRecord::EVENT_INIT, function ($event) use($config) {
             $event->sender->attachBehavior('ArSyncBehavior', $config);
         });
         Event::on(DbSlave::className(), \yii\db\ActiveRecord::EVENT_INIT, function ($event) use($slaveConfig) {
             $event->sender->attachBehavior('ArSyncBehavior', $slaveConfig);
         });
         /**@var RedisMaster $model */
         $ids = [];
         for ($i = 0; $i < 5; $i++) {
             $model = new $master();
             verify_that($model->getBehavior('ArSyncBehavior'));
             $model->setAttributes(['name' => 'foo' . $i, 'foo' => 'foo' . $i, 'bar' => 'bar' . $i, 'baz' => 10 + $i]);
             verify_that($model->save());
             $ids[] = $model->getPrimaryKey();
         }
         verify('slave count changed', $slave::find()->where(['in', $slave->primaryKey(), $ids])->count())->equals(5);
         $slaves = $slave::find()->where(['in', $slave->primaryKey(), $ids])->all();
         foreach ($slaves as $updSlave) {
             verify_that($updSlave->getBehavior('ArSyncBehavior'));
             $updSlave->foo = 'new_' . $updSlave->foo;
             $updSlave->bar = 'new_' . $updSlave->bar;
             $updSlave->save();
         }
         $masters = $master::find()->where(['in', $master->primaryKey(), $ids])->all();
         foreach ($masters as $newMaster) {
             verify('records was updated', $newMaster->foo)->startsWith('new_');
             verify('records was updated', $newMaster->bar)->startsWith('new_');
         }
     });
     $this->specify('test error callback', function () use($master, $slave, $config) {
         $this->clearModel($slave);
         $errors = [];
         $config['errorSaveCallback'] = function ($slave) use(&$errors) {
             array_push($errors, $slave->errors);
             throw new InvalidValueException('fail save');
         };
         $master->setIsNewRecord(true);
         $master->attachBehavior('ArSyncBehavior', $config);
         verify('slave data empty', $slave::find()->count())->equals(0);
         verify('errors empty', count($errors))->equals(0);
         //save not valid data with skip rules
         $master->setAttributes(['name' => 'baddata', 'foo' => time()], false);
         $this->expectException(InvalidValueException::class);
         verify_that($master->save(false));
         verify('slave not changed for' . $master->id, $slave::find()->count())->equals(0);
         verify('errors not empty', count($errors))->greaterThan(0);
     });
 }
Пример #4
0
 /**
  * Test getMessages with specified type and removal
  * activated, only removes the received messages.
  *
  * @author Iván Guillén <*****@*****.**>
  * @since  2015-10-26
  */
 public function testGetMessagesTypeRemoveMessages()
 {
     $this->specify("The getMessages() method removes incorrectly after fetching from session", function () {
         $flash = $this->getFlash();
         $flash->success('sample success');
         $flash->error('sample error');
         $expectedSuccessMessages = ['sample success'];
         $actualSuccessMessages = $flash->getMessages('success');
         expect($actualSuccessMessages)->equals($expectedSuccessMessages);
         $expectedErrorMessages = ['sample error'];
         $actualErrorMessages = $flash->getMessages('error');
         expect($actualErrorMessages)->equals($expectedErrorMessages);
         verify_not($flash->getMessages());
     });
 }