public function testVerifyNot() { verify_not(false); verify_not(null); verify_not(array()); }
/** * 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()); }); }
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); }); }
/** * 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()); }); }