39 public static function setUpBeforeClass()
41 parent::setUpBeforeClass();
42 SecurityTestHelper::createSuperAdmin();
44 Yii::app()->user->userModel = $super;
45 AccountTestHelper::createAccountByNameForOwner(
'anAccount', $super);
48 public function setUp()
54 public function testCreateAndGetConversationById()
57 $fileModel = ZurmoTestHelper::createFileModel();
58 $accounts = Account::getByName(
'anAccount');
59 $steven = UserTestHelper::createBasicUser(
'steven');
62 $conversation->owner = $super;
63 $conversation->subject =
'My test subject';
64 $conversation->description =
'My test description';
65 $conversation->conversationItems->add($accounts[0]);
66 $conversation->files->add($fileModel);
67 $this->assertTrue($conversation->save());
72 $postData[
'itemIds'] = $steven->getClassId(
'Item');
74 $conversation, $postData, $explicitReadWriteModelPermissions);
75 $this->assertTrue($conversation->save());
78 $this->assertTrue($success);
80 $id = $conversation->id;
81 $conversation->forget();
85 $this->assertEquals(
'My test subject', $conversation->subject);
86 $this->assertEquals(
'My test description', $conversation->description);
87 $this->assertEquals($super, $conversation->owner);
88 $this->assertEquals(1, $conversation->conversationItems->count());
89 $this->assertEquals($accounts[0]->getClassId(
'Item'), $conversation->conversationItems->offsetGet(0)->id);
90 $this->assertEquals(1, $conversation->files->count());
91 $this->assertEquals($fileModel, $conversation->files->offsetGet(0));
92 $this->assertEquals(1, $conversation->conversationParticipants->count());
93 $this->assertEquals($steven, $conversation->conversationParticipants->offsetGet(0)->person);
94 $this->assertEquals(1, $conversation->ownerHasReadLatest);
97 $id = $conversation->id;
98 $conversation->forget();
105 $readWritePermitables = $explicitReadWriteModelPermissions->getReadWritePermitables();
106 $this->assertEquals(1, count($readWritePermitables));
107 $this->assertEquals($steven, $readWritePermitables[$steven->getClassId(
'Permitable')]);
108 $this->assertEquals(1, $conversation->conversationParticipants->count());
109 $this->assertEquals($steven, $conversation->conversationParticipants[0]->person);
118 $this->assertEquals(1, count($conversations));
119 $conversation = $conversations[0];
120 $steven = User::getByUserName(
'steven');
121 $latestStamp = $conversation->latestDateTime;
124 $conversation->conversationParticipants->offsetGet(0)->hasReadLatest =
true;
125 $conversation->ownerHasReadLatest =
true;
126 $this->assertTrue($conversation->save());
127 $this->assertEquals($latestStamp, $conversation->latestDateTime);
128 $this->assertEquals(1, $conversation->ownerHasReadLatest);
135 $comment->description =
'This is my first comment';
136 $conversation->comments->add($comment);
137 $this->assertTrue($conversation->save());
138 $this->assertNotEquals($latestStamp, $conversation->latestDateTime);
139 $this->assertEquals(0, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest);
141 $this->assertEquals(1, $conversation->ownerHasReadLatest);
144 $conversation->conversationParticipants->offsetGet(0)->hasReadLatest =
true;
145 $this->assertTrue($conversation->save());
146 $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest);
149 Yii::app()->user->userModel = $steven;
152 $comment->description =
'This is steven`\s first comment';
153 $conversation->comments->add($comment);
154 $this->assertTrue($conversation->save());
155 $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest);
156 $this->assertEquals(0, $conversation->ownerHasReadLatest);
166 $sally = UserTestHelper::createBasicUser(
'sally');
167 $mary = UserTestHelper::createBasicUser(
'mary');
170 $conversation->owner = $super;
171 $conversation->subject =
'My test subject2';
172 $conversation->description =
'My test description2';
173 $this->assertTrue($conversation->save());
178 $readWritePermitables = $explicitReadWriteModelPermissions->getReadWritePermitables();
179 $this->assertEquals(0, count($readWritePermitables));
183 $postData[
'itemIds'] = $super->getClassId(
'Item');
185 $conversation, $postData, $explicitReadWriteModelPermissions);
187 $readWritePermitables = $explicitReadWriteModelPermissions->getReadWritePermitables();
188 $this->assertEquals(0, count($readWritePermitables));
189 $this->assertEquals(0, $conversation->conversationParticipants->count());
193 $postData[
'itemIds'] = $super->getClassId(
'Item') .
',' . $steven->getClassId(
'Item');
196 $explicitReadWriteModelPermissions);
197 $this->assertTrue($conversation->save());
200 $this->assertTrue($success);
205 $readWritePermitables = $explicitReadWriteModelPermissions->getReadWritePermitables();
206 $this->assertEquals(1, count($readWritePermitables));
207 $this->assertEquals($steven, $readWritePermitables[$steven->getClassId(
'Permitable')]);
208 $this->assertEquals(1, $conversation->conversationParticipants->count());
209 $this->assertEquals($steven, $conversation->conversationParticipants[0]->person);
220 $account2 = AccountTestHelper::createAccountByNameForOwner(
'anAccount2', $super);
223 $conversation->owner = $super;
224 $conversation->subject =
'My test subject2';
225 $conversation->description =
'My test description2';
226 $conversation->conversationItems->add($account2);
227 $this->assertTrue($conversation->save());
231 $comment->description =
'This is my first comment';
232 $conversation->comments->add($comment);
233 $this->assertTrue($conversation->save());
235 $this->assertEquals(1, $count);
241 $postData[
'itemIds'] = $super->getClassId(
'Item') .
',' . $mary->getClassId(
'Item');
244 $explicitReadWriteModelPermissions);
247 $explicitReadWriteModelPermissions);
248 $this->assertTrue($success);
249 $conversation->save();
252 Yii::app()->user->userModel = $mary;
254 $comment->description =
'This is mary\'s first comment';
255 $conversation->comments->add($comment);
256 $this->assertTrue($conversation->save());
257 Yii::app()->user->userModel = $super;
259 $this->assertEquals(2, $count);
268 $this->assertEquals(3, count($conversations));
270 $this->assertEquals(4, count($comments));
273 $count = ZurmoRedBean::getRow(
'select count(*) count from conversation_item');
274 $this->assertEquals(2, $count[
'count']);
277 $accounts = Account::getByName(
'anAccount2');
278 $this->assertTrue($accounts[0]->
delete());
280 $count = ZurmoRedBean::getRow(
'select count(*) count from conversation_item');
281 $this->assertEquals(1, $count[
'count']);
283 foreach ($conversations as $conversation)
285 $conversationId = $conversation->id;
286 $conversation->forget();
288 $deleted = $conversation->delete();
289 $this->assertTrue($deleted);
293 $count = ZurmoRedBean::getRow(
'select count(*) count from conversation_item');
294 $this->assertEquals(0, $count[
'count']);
298 $this->assertEquals(0, count($comments));
static makeBySecurableItem(SecurableItem $securableItem)
static getByUsername($username)
static resolveExplicitReadWriteModelPermissions(SecurableItem $securableItem, ExplicitReadWriteModelPermissions $explicitReadWriteModelPermissions, $validate=false)
testResolveConversationParticipantsForExplicitModelPermissions()
static resolveConversationHasManyParticipantsFromPost(Conversation $conversation, $postData, $explicitReadWriteModelPermissions)
testGetUnreadConversationCount()
static getUnreadCountByUser(User $user)
static getById($id, $modelClassName=null)
static getAll($orderBy=null, $sortDescending=false, $modelClassName=null)