/** * Rebuild read permission subscription table */ public static function buildTables() { foreach (self::getReadSubscriptionModelClassNames() as $modelClassName) { $readPermissionsSubscriptionTableName = self::getSubscriptionTableName($modelClassName); self::recreateTable($readPermissionsSubscriptionTableName); } ModelCreationApiSyncUtil::buildTable(); }
/** * Rebuild read permission subscription table */ public static function buildTables() { $readSubscriptionModelClassNames = PathUtil::getAllReadSubscriptionModelClassNames(); foreach ($readSubscriptionModelClassNames as $modelClassName) { $readPermissionsSubscriptionTableName = static::getSubscriptionTableName($modelClassName); static::recreateTable($readPermissionsSubscriptionTableName); } static::recreateAccountBuildTable(); ModelCreationApiSyncUtil::buildTable(); }
public function testRebuilt() { ModelCreationApiSyncUtil::buildTable(); $sql = 'INSERT INTO ' . ModelCreationApiSyncUtil::TABLE_NAME . ' VALUES (null, \'ApiServiceName\', \'1\', \'Contact\', \'2013-05-03 15:16:06\')'; ZurmoRedBean::exec($sql); $apiServiceCreationRow = ZurmoRedBean::getRow('SELECT * FROM ' . ModelCreationApiSyncUtil::TABLE_NAME); $this->assertTrue($apiServiceCreationRow['id'] > 0); $this->assertEquals('ApiServiceName', $apiServiceCreationRow['servicename']); $this->assertEquals(1, $apiServiceCreationRow['modelid']); $this->assertEquals('Contact', $apiServiceCreationRow['modelclassname']); $this->assertEquals('2013-05-03 15:16:06', $apiServiceCreationRow['createddatetime']); // Now test when table already exist ModelCreationApiSyncUtil::buildTable(); $apiServiceCreationRow = ZurmoRedBean::getRow('SELECT COUNT(*) as totalRows FROM ' . ModelCreationApiSyncUtil::TABLE_NAME); $this->assertEquals(1, $apiServiceCreationRow['totalRows']); $sql = 'INSERT INTO ' . ModelCreationApiSyncUtil::TABLE_NAME . ' VALUES (null, \'ApiServiceName\', \'2\', \'Contact\', \'2013-06-03 15:16:06\')'; ZurmoRedBean::exec($sql); $apiServiceCreationRow = ZurmoRedBean::getRow('SELECT COUNT(*) as totalRows FROM ' . ModelCreationApiSyncUtil::TABLE_NAME); $this->assertEquals(2, $apiServiceCreationRow['totalRows']); }
public function testGetUpdatedModels() { ReadPermissionsSubscriptionUtil::recreateTable('account_read_subscription'); ModelCreationApiSyncUtil::buildTable(); $account1 = AccountTestHelper::createAccountByNameForOwner('First Test Update Account', Yii::app()->user->userModel); $timestamp = time(); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); $account1->name = 'First Test Update Account Modified'; $this->assertTrue($account1->save()); // This should return true, because there should be 3 second gap between created and modified timestamps $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); sleep(4); $account1->name = 'First Test Update Account Modified 2'; $this->assertTrue($account1->save()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(1, count($models)); $this->assertEquals($account1->id, $models[0]->id); $this->assertEquals($account1->name, $models[0]->name); // Check pagination sleep(2); $timestamp = time(); $account2 = AccountTestHelper::createAccountByNameForOwner('Second Test Update Account', Yii::app()->user->userModel); $account3 = AccountTestHelper::createAccountByNameForOwner('Third Test Update Account', Yii::app()->user->userModel); $account4 = AccountTestHelper::createAccountByNameForOwner('Forth Test Update Account', Yii::app()->user->userModel); sleep(5); $account2->name = 'Second Test Update Account Modified'; $account3->name = 'Third Test Update Account Modified'; $account4->name = 'Forth Test Update Account Modified'; $this->assertTrue($account2->save()); $this->assertTrue($account3->save()); $this->assertTrue($account4->save()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 3, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(3, count($models)); $this->assertTrue($account2->id == $models[0]->id || $account2->id == $models[1]->id || $account2->id == $models[2]->id); $this->assertTrue($account2->name == $models[0]->name || $account2->name == $models[1]->name || $account2->name == $models[2]->name); $this->assertTrue($account3->id == $models[0]->id || $account3->id == $models[1]->id || $account3->id == $models[2]->id); $this->assertTrue($account3->name == $models[0]->name || $account3->name == $models[1]->name || $account3->name == $models[2]->name); $this->assertTrue($account4->id == $models[0]->id || $account4->id == $models[1]->id || $account4->id == $models[2]->id); $this->assertTrue($account4->name == $models[0]->name || $account4->name == $models[1]->name || $account4->name == $models[2]->name); // Not test for non super user $job = new ReadPermissionSubscriptionQuickUpdateJob(); $mike = UserTestHelper::createBasicUser('Mike'); $mikeAccount1 = AccountTestHelper::createAccountByNameForOwner('ABC Account', Yii::app()->user->userModel); $timestamp = time(); $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); $mikeAccount1->name = 'ABCD Account'; $this->assertTrue($mikeAccount1->save()); // This should return true, because there should be 3 second gap between created and modified timestamps $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); sleep(4); $mikeAccount1->name = 'AB Account'; $this->assertTrue($mikeAccount1->save()); $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(1, count($models)); $this->assertEquals($mikeAccount1->id, $models[0]->id); $this->assertEquals($mikeAccount1->name, $models[0]->name); }