createApiClient(); $payload = $this->invokeBuildPersonalDataRequestData($apiClient, 'customer@example.com', 'Adressdaten', 123, 456); $xml = $this->serializePayload($payload); self::assertStringContainsString('J', $xml); self::assertStringNotContainsString('', $xml); self::assertStringContainsString('customer@example.com', $xml); self::assertStringContainsString('123', $xml); self::assertStringContainsString('456', $xml); } public function testPersonalDataRequestOmitsOptionalIdentifiersWhenNotProvided(): void { $apiClient = $this->createApiClient(); $payload = $this->invokeBuildPersonalDataRequestData($apiClient, 'customer@example.com', 'Adressdaten'); $xml = $this->serializePayload($payload); self::assertStringContainsString('J', $xml); self::assertStringNotContainsString('', $xml); self::assertStringContainsString('customer@example.com', $xml); self::assertStringNotContainsString('', $xml); self::assertStringNotContainsString('', $xml); } /** * @return array */ private function invokeBuildPersonalDataRequestData( ApiClient $apiClient, string $email, string $art, ?int $addressId = null, ?int $personId = null ): array { $method = new \ReflectionMethod(ApiClient::class, 'buildCustomerDataRequestData'); $method->setAccessible(true); /** @var array $payload */ $payload = $method->invoke($apiClient, $email, $art, $addressId, $personId); return $payload; } /** * @param array $payload */ private function serializePayload(array $payload): string { return (new Serializer([], [new XmlEncoder()]))->serialize($payload, 'xml', [ XmlEncoder::ROOT_NODE_NAME => 'anfrage', XmlEncoder::ENCODING => 'UTF-8', ]); } private function createApiClient(): ApiClient { return new ApiClient( $this->createMock(SerializerInterface::class), $this->createMock(ApiResponseParser::class), $this->createMock(FilesystemOperator::class), $this->createMock(LoggerInterface::class), $this->createMock(BookingDataProcessor::class), new RequestStack(), new RequestIdGenerator(), [ 'bpn_username' => 'test-user', 'bpn_password' => 'test-password', 'bpn_api_ip' => '127.0.0.1', 'bpn_api_ports' => [9000], ], ); } }