Функциональное тестирование SilverStripe для маршрута CMS (настройки) всегда возвращает 404 для запроса POST - PullRequest
2 голосов
/ 01 апреля 2020

Я работаю над проектом 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. Что не так с моим кодом и как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...