function testStoreAuthorsInfo() { $authorsRawData = array('0' => array('name' => 'Test User', 'email' => '*****@*****.**', 'homepage' => 'www.test.com', 'role' => 'test-Developer')); $obj = $this->objFromFixture('ExtensionData', 'testmodule'); $extensionId = $obj->ID; $ExtensionAuthorController = new ExtensionAuthorController(); $extensionAuthorsId = $ExtensionAuthorController->store_authors_info($authorsRawData, $extensionId); $extensionAuthor = ExtensionAuthor::get()->byID($extensionAuthorsId['0']); $this->assertEquals($extensionAuthor->Email, '*****@*****.**'); $this->assertEquals($extensionAuthor->Name, 'Test User'); $this->assertEquals($extensionAuthor->HomePage, 'www.test.com'); $this->assertEquals($extensionAuthor->Role, 'test-Developer'); }
/** * Store Multiple Author Info in Member class * Url ID * * @param array $authorsRawData, int $extensionId */ public static function store_authors_info($authorsRawData, $extensionId) { $totalAuthors = count($authorsRawData); $extensionAuthorsId = array(); foreach ($authorsRawData as $author) { if (array_key_exists('email', $author)) { if (ExtensionAuthor::get()->filter("Email", $author['email'])->first()) { $extensionAuthor = ExtensionAuthor::get()->filter("Email", $author['email'])->first(); $extensionAuthor->Email = $author['email']; } else { $extensionAuthor = new ExtensionAuthor(); $extensionAuthor->Email = $author['email']; } } else { throw new InvalidArgumentException('make sure Email field exists in author info'); } if (array_key_exists('name', $author)) { $extensionAuthor->Name = $author['name']; } else { throw new InvalidArgumentException('Make sure Name field exists in author info'); } if (array_key_exists('homepage', $author)) { $extensionAuthor->HomePage = $author['homepage']; } if (array_key_exists('role', $author)) { $extensionAuthor->Role = $author['role']; } $extensionAuthor->write(); $extensionAuthor->AuthorOf()->add($extensionId); array_push($extensionAuthorsId, $extensionAuthor->ID); } if (count($extensionAuthorsId) == $totalAuthors) { return $extensionAuthorsId; } else { throw new InvalidArgumentException('Unable to store some authors Info'); } }