build($options); $data = $serializer->serialize($instance); $expected = array( 'type' => $options['type'], 'last_name' => $options['lastName'], 'first_name' => $options['firstName'], ); if (!empty($options['middleName'])) { $expected['middle_name'] = $options['middleName']; } if (!empty($options['metadata'])) { $expected['metadata'] = array(); foreach ($options['metadata'] as $key => $value) { $expected['metadata'][$key] = $value; } } self::assertEquals($expected, $data); } /** * @return array * @throws Exception */ public function validDataProvider() { $result = array(); for ($i = 0; $i < 10; $i++) { $request = array( 'type' => PersonalDataType::SBP_PAYOUT_RECIPIENT, 'lastName' => Random::str(1, CreatePersonalDataRequest::MAX_LENGTH_LAST_NAME), 'firstName' => Random::str(1, CreatePersonalDataRequest::MAX_LENGTH_FIRST_NAME), ); if (Random::bool()) { $request['middleName'] = Random::str(1, CreatePersonalDataRequest::MAX_LENGTH_LAST_NAME); } if (Random::bool()) { $request['metadata'] = array( Random::str(3, 10, 'abcdefghijklmnopqrstuvwxyz') => Random::str(3, 20), ); } $result[] = array($request); } return $result; } public function testSerializeEmptyMetadata() { $serializer = new CreatePersonalDataRequestSerializer(); $instance = CreatePersonalDataRequest::builder()->build(array( 'type' => PersonalDataType::SBP_PAYOUT_RECIPIENT, 'lastName' => Random::str(10), 'firstName' => Random::str(10), )); $data = $serializer->serialize($instance); $expected = array( 'type' => PersonalDataType::SBP_PAYOUT_RECIPIENT, 'last_name' => $instance->getLastName(), 'first_name' => $instance->getFirstName(), ); self::assertEquals($expected, $data); } public function testSerializeWithAllFields() { $serializer = new CreatePersonalDataRequestSerializer(); $instance = CreatePersonalDataRequest::builder()->build(array( 'type' => PersonalDataType::SBP_PAYOUT_RECIPIENT, 'lastName' => 'Иванов', 'firstName' => 'Иван', 'middleName' => 'Иванович', 'metadata' => array( 'order_id' => '12345', 'source' => 'web', ), )); $data = $serializer->serialize($instance); $expected = array( 'type' => PersonalDataType::SBP_PAYOUT_RECIPIENT, 'last_name' => 'Иванов', 'first_name' => 'Иван', 'middle_name' => 'Иванович', 'metadata' => array( 'order_id' => '12345', 'source' => 'web', ), ); self::assertEquals($expected, $data); } }