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'); } }