parser = new CrmAttributesResponseParser();
}
public function testParseAssignsGroupsManagerRoleWhenSelected(): void
{
$roles = $this->parseRoles($this->selectionXml(1477, true));
self::assertContains('ROLE_GROUPS_MANAGER', $roles);
self::assertNotContains('ROLE_GROUPS_ADMIN', $roles);
}
public function testParseAssignsGroupsAdminRoleWhenSelected(): void
{
$roles = $this->parseRoles($this->selectionXml(1478, true));
self::assertContains('ROLE_GROUPS_ADMIN', $roles);
self::assertNotContains('ROLE_GROUPS_MANAGER', $roles);
}
public function testParseAssignsNoGroupsRolesWhenNotSelected(): void
{
$roles = $this->parseRoles($this->selectionXml(1477, false));
self::assertNotContains('ROLE_GROUPS_MANAGER', $roles);
self::assertNotContains('ROLE_GROUPS_ADMIN', $roles);
self::assertSame(['ROLE_CUSTOMER'], $roles);
}
public function testParseStillAssignsExistingAdminManagerTeamerRoles(): void
{
$xmlContent = '
';
$roles = $this->parseRoles($xmlContent);
self::assertContains('ROLE_ADMIN', $roles);
self::assertContains('ROLE_MANAGER', $roles);
self::assertContains('ROLE_TEAMER', $roles);
}
/**
* @return string[]
*/
private function parseRoles(string $xmlContent): array
{
$crawler = new Crawler($xmlContent);
$resultNode = $crawler->filterXPath('//ergebnis');
return $this->parser->parse($resultNode)->roles;
}
private function selectionXml(int $id, bool $selected): string
{
return sprintf('
', $id, $selected ? 'True' : 'False');
}
}