build($options); $data = $serializer->serialize($instance); $request = new CreatePayoutRequest($options); $expected = $request->toArray(); self::assertEquals($expected, $data); } /** * @throws Exception */ public static function validDataProvider(): array { $metadata = new Metadata(); $metadata->test = 'test'; $result = [ [ [ 'amount' => new MonetaryAmount(Random::int(1, 1000000)), 'payoutToken' => uniqid('', true), 'payoutDestinationData' => null, 'metadata' => null, 'description' => null, 'deal' => null, 'payment_method_id' => null, 'personal_data' => null, ], ], [ [ 'amount' => new MonetaryAmount(Random::int(1, 1000000)), 'payoutToken' => '', 'payoutDestinationData' => Random::value(self::payoutDestinationData()), 'metadata' => [Random::str(1)], 'description' => '', 'deal' => new PayoutDealInfo(['id' => Random::str(36, 50)]), 'payment_method_id' => '', 'personal_data' => [new PayoutPersonalData(['id' => Random::str(36, 50)])], ], ], ]; for ($i = 0; $i < 10; $i++) { $even = ($i % 3); $request = [ 'amount' => new MonetaryAmount(Random::int(1, 1000000)), 'payoutToken' => $even === 0 ? uniqid('', true) : null, 'payoutDestinationData' => $even === 1 ? Random::value(self::payoutDestinationData()) : null, 'metadata' => $even ? $metadata : ['test' => 'test'], 'description' => Random::str(5, 128), 'deal' => $even ? new PayoutDealInfo(['id' => Random::str(36, 50)]) : ['id' => Random::str(36, 50)], 'payment_method_id' => $even === 2 ? Random::str(5, 128) : null, 'personal_data' => [$even ? new PayoutPersonalData(['id' => Random::str(36, 50)]) : ['id' => Random::str(36, 50)]], ]; $result[] = [$request]; } return $result; } public static function payoutDestinationData(): array { return [ [ 'type' => PaymentMethodType::YOO_MONEY, 'account_number' => Random::str(11, 33, '0123456789'), ], [ 'type' => PaymentMethodType::BANK_CARD, 'card' => [ 'number' => Random::str(16, 16, '0123456789'), ], ], [ 'type' => PaymentMethodType::SBP, 'phone' => Random::str(4, 15, '0123456789'), 'bank_id' => Random::str(12, 12, '0123456789'), ], ]; } }