public function testRecreateTable() { ReadPermissionsSubscriptionUtil::recreateTable('account_read_subscription'); $sql = 'INSERT INTO account_read_subscription VALUES (null, \'1\', \'2\', \'2013-05-03 15:16:06\', \'1\')'; ZurmoRedBean::exec($sql); $accountReadSubscription = ZurmoRedBean::getRow("SELECT * FROM account_read_subscription"); $this->assertTrue($accountReadSubscription['id'] > 0); $this->assertEquals(1, $accountReadSubscription['userid']); $this->assertEquals(2, $accountReadSubscription['modelid']); $this->assertEquals('2013-05-03 15:16:06', $accountReadSubscription['modifieddatetime']); $this->assertEquals(1, $accountReadSubscription['subscriptiontype']); $sql = 'DELETE FROM account_read_subscription'; ZurmoRedBean::exec($sql); }
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); }