I'm trying to write some WebTestCases for a simple blog integrated in our web application.
One of the test cases looks like the following:
public function testNewSubmitAction()
{
//load necessary data & login as admin
$fixtureRepo = $this->loadFixtures([LoadUserData::class])->getReferenceRepository();
$this->loadFixtures([LoadBlogData::class], null, 'doctrine_phpcr');
$this->loginAs($customer = $fixtureRepo->getReference(LoadUserData::ADMIN_ACCOUNT), $this->getContainer()->getParameter('firewall.name'));
$client = static::makeClient();
$crawler = $client->request("GET", "/content/blog/new");
$form = $crawler->selectButton('Erstellen')->form();
$client->submit($form, [
'blog[title]' => 'Testblog',
]);
$this->assertTrue($client->getResponse()->isRedirect());
}
The LoadBlogData Class has a load method with this content:
public function load(ObjectManager $manager)
{
parent::init($manager);
NodeHelper::createPath($this->session, '/cms/routes/blog/de');
NodeHelper::createPath($this->session, '/cms/routes/blog/fr');
NodeHelper::createPath($this->session, '/cms/routes/blog/it');
NodeHelper::createPath($this->session, '/cms/routes/categories/de');
NodeHelper::createPath($this->session, '/cms/routes/categories/fr');
NodeHelper::createPath($this->session, '/cms/routes/categories/it');
NodeHelper::createPath($this->session, '/cms/pages/blog');
NodeHelper::createPath($this->session, '/cms/content/blog');
NodeHelper::createPath($this->session, '/cms/categories');
$this->createBlog($manager);
$manager->flush();
}
The createBlog Method should create a blog entry.
private function createBlog(ObjectManager $manager)
{
$blog = new Blog();
$blog->setTitle('Test');
$blog->setName('test');
$blog->setCreatedAt(new \DateTime);
$blog->setUpdatedAt(new \DateTime);
$blog->setCreatedBy('Tester');
$blog->setParentDocument($manager->find(null, '/cms/pages/blog'));
$manager->persist($blog);
}
And this is where it fails. When running the test I get the error message "Register phpcr:managed node type first.".
Do you have an idea how to fix this?
I know I have to initialize PHPCR first. Could this be done while loading the fixtures?
Edit: I also tried loading this data using a custom initializer. But I get the same error.