@@ -54,6 +54,57 @@ public async Task ReceiptCancelAsync_UsesReceiptDeleteRoute()
5454 Assert . Equal ( "rcp_123" , result . Id ) ;
5555 }
5656
57+ [ Fact ]
58+ public async Task ReceiptToInvoiceAsync_UsesToInvoiceRoute ( )
59+ {
60+ var handler = new RecordingHandler ( async ( request , cancellationToken ) =>
61+ {
62+ Assert . Equal ( HttpMethod . Post , request . Method ) ;
63+ Assert . NotNull ( request . RequestUri ) ;
64+ Assert . Equal ( "/v2/receipts/to-invoice" , request . RequestUri . PathAndQuery ) ;
65+ Assert . NotNull ( request . Content ) ;
66+ var body = await request . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) ;
67+ Assert . Contains ( "\" keys\" :[\" rcp_1\" ,\" rcp_2\" ]" , body ) ;
68+ return JsonResponse ( "{\" id\" :\" inv_123\" }" ) ;
69+ } ) ;
70+
71+ var wrapper = new ReceiptWrapper ( "test_key" , "v2" , CreateHttpClient ( handler ) ) ;
72+ await wrapper . ToInvoiceAsync ( new Dictionary < string , object >
73+ {
74+ [ "keys" ] = new [ ] { "rcp_1" , "rcp_2" }
75+ } ) ;
76+ }
77+
78+ [ Fact ]
79+ public async Task ReceiptPreviewToInvoicePdfAsync_UsesPreviewPdfRoute ( )
80+ {
81+ var payload = Encoding . UTF8 . GetBytes ( "pdf-bytes" ) ;
82+ var handler = new RecordingHandler ( async ( request , cancellationToken ) =>
83+ {
84+ Assert . Equal ( HttpMethod . Post , request . Method ) ;
85+ Assert . NotNull ( request . RequestUri ) ;
86+ Assert . Equal ( "/v2/receipts/to-invoice/preview" , request . RequestUri . PathAndQuery ) ;
87+ Assert . NotNull ( request . Content ) ;
88+ var body = await request . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) ;
89+ Assert . Contains ( "\" keys\" :[\" rcp_1\" ]" , body ) ;
90+ return new HttpResponseMessage ( HttpStatusCode . OK )
91+ {
92+ Content = new ByteArrayContent ( payload )
93+ } ;
94+ } ) ;
95+
96+ var wrapper = new ReceiptWrapper ( "test_key" , "v2" , CreateHttpClient ( handler ) ) ;
97+ using var stream = await wrapper . PreviewToInvoicePdfAsync ( new Dictionary < string , object >
98+ {
99+ [ "keys" ] = new [ ] { "rcp_1" }
100+ } ) ;
101+
102+ Assert . Equal ( 0 , stream . Position ) ;
103+ using var reader = new StreamReader ( stream , Encoding . UTF8 , false , 1024 , leaveOpen : true ) ;
104+ var text = await reader . ReadToEndAsync ( ) ;
105+ Assert . Equal ( "pdf-bytes" , text ) ;
106+ }
107+
57108 [ Fact ]
58109 public async Task OrganizationDeleteSeriesAsync_UsesDeleteSeriesRoute ( )
59110 {
0 commit comments