/** * @depends testRemoveUsers_ProjectOwner_NotRemovedFromProject */ public function testRemoveUsers_ProjectOwner_NotRemovedFromProject_RestoreErrorDisplay() { // restore error display after last test self::$environ->restoreErrorDisplay(); // read from disk $sameProject = new ProjectModel(self::$save['projectId']); $sameUser1 = new UserModel(self::$save['user1Id']); $sameUser2 = new UserModel(self::$save['user2Id']); // project still has project owner $this->assertEquals(1, $sameProject->listUsers()->count); $this->assertEquals(0, $sameUser1->listProjects(self::$environ->website->domain)->count); $this->assertEquals(1, $sameUser2->listProjects(self::$environ->website->domain)->count); }
public function testProjectListUsers_TwoUsers_ListHasDetails() { $environ = new MongoTestEnvironment(); $userId1 = $environ->createUser('user1', 'User One', '*****@*****.**'); $um1 = new UserModel($userId1); $userId2 = $environ->createUser('user2', 'User Two', '*****@*****.**'); $um2 = new UserModel($userId2); $project = $environ->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE); $projectId = $project->id->asString(); // Check the list users is empty $result = $project->listUsers(); $this->assertEquals(0, $result->count); $this->assertEquals([], $result->entries); // Add our two users $project->addUser($userId1, ProjectRoles::CONTRIBUTOR); $um1->addProject($projectId); $um1->write(); $project->addUser($userId2, ProjectRoles::CONTRIBUTOR); $um2->addProject($projectId); $um2->write(); $project->write(); $otherProject = new ProjectModel($projectId); $result = $otherProject->listUsers(); $this->assertEquals(2, $result->count); $this->assertEquals([['email' => '*****@*****.**', 'name' => 'User One', 'username' => 'user1', 'id' => $userId1, 'role' => ProjectRoles::CONTRIBUTOR], ['email' => '*****@*****.**', 'name' => 'User Two', 'username' => 'user2', 'id' => $userId2, 'role' => ProjectRoles::CONTRIBUTOR]], $result->entries); }
public function testCreateSimple_CreateUser_PasswordAndJoinProject() { self::$environ->clean(); // setup parameters: username and project $userName = '******'; $project = self::$environ->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE); $projectId = $project->id->asString(); $currentUserId = self::$environ->createUser('test1', 'test1', '*****@*****.**'); // create user $dto = UserCommands::createSimple($userName, $projectId, $currentUserId, self::$environ->website); // read from disk $user = new UserModel($dto['id']); $sameProject = new ProjectModel($projectId); // user created and password created, user joined to project $this->assertEquals('username', $user->username); $this->assertEquals(4, strlen($dto['password'])); $projectUser = $sameProject->listUsers()->entries[0]; $this->assertEquals('username', $projectUser['username']); $userProject = $user->listProjects(self::$environ->website->domain)->entries[0]; $this->assertEquals(SF_TESTPROJECT, $userProject['projectName']); }
/** * markUnreadForProjectMembers() is only intended to be called from a child class such as UnreadActivityModel * @param string $itemId * @param ProjectModel $project * @param string $questionId * @param string $exceptThisUserId * @throws \Exception */ public static function markUnreadForProjectMembers($itemId, $project, $questionId = '', $exceptThisUserId = '') { $className = get_called_class(); if ($className == 'Api\\Model\\UserUnreadModel') { throw new \Exception("static method markUnreadForProject cannot be called from base class UserUnreadModel"); } $userList = $project->listUsers(); foreach ($userList->entries as $user) { if ($user['id'] == $exceptThisUserId) { continue; } // TODO: Review: This code is getting cumbersome with if statements for specific child classes. Maybe it's time to move this method to the child classes - cjh 2013/10 if ($questionId != '') { $unreadModel = new $className($user['id'], $project->id->asString(), $questionId); } else { $unreadModel = new $className($user['id'], $project->id->asString()); } /** @var UserUnreadModel $unreadModel */ $unreadModel->markUnread($itemId); $unreadModel->write(); } }