public function testSendJoinRequestAccepted_PropertiesFromToBodyOk() { $e = new LexiconMongoTestEnvironment(); $e->clean(); $userId = $e->createUser('User', 'Name', '*****@*****.**'); $user = new UserModel($userId); $project = $e->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE); $delivery = new MockCommunicateDelivery(); Communicate::sendJoinRequestAccepted($user, $project, $e->website, $delivery); // What's in the delivery? $senderEmail = 'no-reply@' . $e->website->domain; $expectedFrom = array($senderEmail => $e->website->name); $expectedTo = array($user->email => $user->name); $this->assertEqual($expectedFrom, $delivery->from); $this->assertEqual($expectedTo, $delivery->to); $this->assertPattern('/' . SF_TESTPROJECT . '/', $delivery->subject); $this->assertPattern('/' . $e->website->name . '/', $delivery->subject); $this->assertPattern('/' . SF_TESTPROJECT . '/', $delivery->content); $this->assertPattern('/has been accepted/', $delivery->content); $this->assertPattern('/' . $e->website->domain . '\\/app\\/semdomtrans/', $delivery->content); }
/** * * @param string $projectId * @param string $userId * @param string $website * @param role $role * @param DeliveryInterface $delivery * @return \Api\Model\Mapper\IdReference|\Api\Model\UserModel */ public static function acceptJoinRequest($projectId, $userId, $website, $role, DeliveryInterface $delivery = null) { $newUser = new UserModel($userId); $project = new ProjectModel(); $project->read($projectId); ProjectCommands::updateUserRole($projectId, $userId, $role); // Make sure the user exists on the site if (!$newUser->hasRoleOnSite($website)) { $newUser->siteRole[$website->domain] = $website->userDefaultSiteRole; } // Determine if user is already a member of the project if ($project->userIsMember($newUser->id->asString())) { return $newUser->id; } $admin = new UserModel($project->ownerRef->asString()); if ($admin->email != '') { Communicate::sendJoinRequestAccepted($newUser, $project, $website, $delivery); } return $admin; }