public function testSyncService() { Yii::$app->setComponents(['synchronizer' => ['class' => 'ufocoder\\SyncSocial\\components\\Synchronizer', 'modelClass' => 'tests\\models\\Record']]); $fakeSyncService = new SyncService(['serviceClass' => '\\tests\\models\\TestOAuth2', 'returnUrl' => 'http://my_own_site/returnUrl']); $mockSyncService = Mockery::mock($fakeSyncService); $mockSyncService->shouldReceive('isConnected')->andReturnUsing(function () { return true; }); $mockSyncService->shouldReceive('publishPost')->andReturnUsing(function ($message, $url = null) { return ['service_id_author' => '2000', 'service_id_post' => '1000', 'service_language' => 'ru', 'time_created' => strtotime('Thu Oct 23 07:00:00 +0000 2014')]; }); $mockSyncService->shouldReceive('deletePost')->andReturnUsing(function ($id) { return true; }); Yii::$app->synchronizer->setService('fakeService', $mockSyncService); $model = new Record(); $model->attachBehavior('SyncSocialBehavior', ['class' => SynchronizerBehavior::className(), 'canSyncActiveRecord' => function ($model) { return false; }]); $model->syncServices = ['fakeService']; $model->save(); $this->assertTrue(count($model->syncModel) === 1); $find = Record::findOne($model->getPrimaryKey()); $this->assertTrue($model->getPrimaryKey() === $find->getPrimaryKey()); $count = $model->delete(); $this->assertTrue($count == 1); }
public function testSyncCreateSyncModelException() { $model = new Record(); $model->content = 'test'; $model->save(); $serviceName = 'fakeService'; $synchronizer = new Synchronizer(['modelClass' => '\\tests\\models\\Record', 'modelScenario' => 'non_exists_scenario', 'absolutePostUrl' => function ($serviceName, $id) { return 'testurl'; }]); $fakeSyncService = new SyncService(['serviceClass' => '\\tests\\models\\TestOAuth2', 'returnUrl' => 'http://my_own_site/returnUrl']); $mockSyncService = Mockery::mock($fakeSyncService); $mockSyncService->shouldReceive('isConnected')->andReturnUsing(function () { return true; }); $mockSyncService->shouldReceive('isExistsSyncModelByActiveRecord')->andReturnUsing(function ($service, $model) { return false; }); $mockSyncService->shouldReceive('publishPost')->andReturnUsing(function ($message, $url) { return ['service_id_post' => 123, 'service_id_author' => 123, 'time_created' => 'bad_format_data']; }); $synchronizer->setService($serviceName, $mockSyncService); $this->setExpectedException('yii\\base\\Exception', Yii::t('SyncSocial', 'Wrong sync model configuration for SyncSocial extension')); $synchronizer->syncActiveRecord($serviceName, $model); $this->assertTrue(true); }