Я работаю над проектом SilverStripe. Я пишу функциональные тесты для моего приложения. Я пишу функциональный тест для пути в CMS. В моем случае это путь / admin / settings / SecondaryMenuPages. Это путь в CMS, поэтому пользователь должен войти в систему.
Это мой тестовый класс.
class MegaMenuTest extends FunctionalTest
{
protected static $fixture_file = [
'app/tests/Cms/cms_admin_user_fixture.yml',
'app/tests/Cms/secondary_menu_fixture.yml',
];
function testCmsUserCanUnlinkSecondaryMenuItem()
{
$member = $this->objFromFixture(Member::class, 'admin_user');
$adminGroup = $this->objFromFixture(Group::class, 'admin_group');
$this->assignMemberToGroup($member, $adminGroup);
$this->assignPageToSecondaryMenu();
$this->logInAs($member);
$this->post("/admin/settings/SecondaryMenuPages", [
'ID' => 1,
], null, null, json_encode([ 'ID' => 1 ]));
}
private function assignMemberToGroup($member, $adminGroup)
{
$sqlInsert = SQLInsert::create('Group_Members');
$sqlInsert->addRows([
[ '"GroupID"' => $adminGroup->ID, '"MemberID"' => $member->ID ],
]);
$sqlInsert->execute();
}
private function assignPageToSecondaryMenu()
{
$page = $this->objFromFixture('Page', 'page_one');
$siteConfig = $this->objFromFixture(SiteConfig::class, 'siteconfig_one');
$sqlInsert = SQLInsert::create('SiteConfig_SecondaryMenuPages');
$sqlInsert->addRows([
[ '"PageID"' => $page->ID, '"SiteConfigID"' => $siteConfig->ID ],
]);
$sqlInsert->execute();
}
}
Буквально, страница находится под настройками в CMS.
Я добавил пользователя-администратора в файл cms_admin_user_fixture.yml следующим образом.
SilverStripe\Security\Member:
admin_user:
ID: 1
LastEdited: 2020-03-28 17:15:53
Created: 2019-01-08 17:04:53
FirstName: Default Admin
Email: admin
SilverStripe\Security\Group:
admin_group:
ID: 1
LastEdited: 2019-01-08 17:04:53
Created: 2019-01-08 17:04:53
Title: Administrators
Code: administrators
Locked: 0
Я заполнил страницу и необходимые данные для запроса в файле primary_menu_fixture.yml следующим образом.
SilverStripe\CMS\Model\SiteTree:
sitetree_page_one:
ID: 1
ClassName: Page
Title: Page Title 1
URLSegment: page-url-1
Page:
page_one:
ID: 1
Heading: Page Title 1
Title: Cision form content
URLSegment: page-url-1
SilverStripe\SiteConfig\SiteConfig:
siteconfig_one:
ID: 1
LastEdited: 2020-03-10 12:25:37
Created: 2019-01-08 17:04:53
Title: Siteconfig Title 1
Tagline: Siteconfig Tagline 1
CanViewType: Anyone
CanEditType: OnlyTheseUsers
CanCreateTopLevelType: OnlyTheseUsers
Когда я запускаю свой тест, пост-запрос по этому пути, "/ admin / settings / SecondaryMenuPages" всегда возвращает 404. Что не так с моим кодом и как я могу это исправить?