complete MECE request

This commit is contained in:
Stephan D
2026-02-24 18:33:12 +01:00
parent 4c5677202a
commit a998b59072
34 changed files with 957 additions and 156 deletions

View File

@@ -5,6 +5,7 @@ import 'package:test/test.dart';
import 'package:pshared/api/requests/payment/initiate.dart';
import 'package:pshared/api/requests/payment/initiate_payments.dart';
import 'package:pshared/api/requests/payment/quote.dart';
import 'package:pshared/api/responses/payment/quotation.dart';
import 'package:pshared/data/dto/money.dart';
import 'package:pshared/data/dto/payment/endpoint.dart';
import 'package:pshared/data/dto/payment/intent/payment.dart';
@@ -40,7 +41,7 @@ void main() {
test('quote payment request uses expected backend field names', () {
final request = QuotePaymentRequest(
idempotencyKey: 'idem-1',
idempotencyKey: '',
previewOnly: true,
intent: const PaymentIntentDTO(
kind: 'payout',
@@ -60,7 +61,7 @@ void main() {
final json =
jsonDecode(jsonEncode(request.toJson())) as Map<String, dynamic>;
expect(json['idempotencyKey'], equals('idem-1'));
expect(json['idempotencyKey'], equals(''));
expect(json['previewOnly'], isTrue);
expect(json['intent'], isA<Map<String, dynamic>>());
@@ -75,6 +76,34 @@ void main() {
expect(destination['type'], equals('cardToken'));
});
test('quote response parses backend fx quote pricedAtUnixMs', () {
final response = PaymentQuoteResponse.fromJson({
'accessToken': {'token': 'token', 'expiration': '2026-02-25T00:00:00Z'},
'idempotencyKey': 'idem-1',
'quote': {
'quoteRef': 'q-1',
'debitAmount': {'amount': '10', 'currency': 'USDT'},
'expectedSettlementAmount': {'amount': '760', 'currency': 'RUB'},
'fxQuote': {
'quoteRef': 'fx-1',
'baseCurrency': 'USDT',
'quoteCurrency': 'RUB',
'side': 'sell_base_buy_quote',
'price': '76',
'baseAmount': {'amount': '10', 'currency': 'USDT'},
'quoteAmount': {'amount': '760', 'currency': 'RUB'},
'expiresAtUnixMs': 1771945907749,
'pricedAtUnixMs': 1771945907000,
'provider': 'binance',
'rateRef': 'rate-1',
'firm': false,
},
},
});
expect(response.quote.fxQuote?.pricedAtUnixMs, equals(1771945907000));
});
test('initiate payment by quote keeps expected fields', () {
final request = InitiatePaymentRequest(
idempotencyKey: 'idem-2',