11import type { EntitlementsUpdateListener } from '../../dto/EntitlementsUpdateListener' ;
22import type { DeferredPurchasesListener } from '../../dto/DeferredPurchasesListener' ;
33import type { QEntitlement } from '../Mapper' ;
4- import DeferredTransaction from '../../dto/DeferredTransaction' ;
4+ import PurchaseResult from '../../dto/PurchaseResult' ;
5+ import { PurchaseResultStatus , PurchaseResultSource } from '../../dto/enums' ;
56
67// Capture event handlers registered on the native module mock
78const eventHandlers : Record < string , Function > = { } ;
@@ -30,8 +31,16 @@ jest.mock('../specs/NativeQonversionModule', () => ({
3031 } ,
3132} ) ) ;
3233
34+ const mockPurchaseResult = new PurchaseResult (
35+ PurchaseResultStatus . SUCCESS ,
36+ null ,
37+ null ,
38+ false ,
39+ PurchaseResultSource . API ,
40+ null
41+ ) ;
42+
3343jest . mock ( '../Mapper' , ( ) => {
34- const MockDeferredTransaction = require ( '../../dto/DeferredTransaction' ) . default ;
3544 return {
3645 __esModule : true ,
3746 default : {
@@ -42,18 +51,7 @@ jest.mock('../Mapper', () => {
4251 }
4352 return map ;
4453 } ) ,
45- convertDeferredTransaction : jest . fn ( ( payload : Record < string , any > ) => {
46- if ( ! payload ) return null ;
47- return new MockDeferredTransaction (
48- payload . productId ?? '' ,
49- payload . transactionId ?? null ,
50- payload . originalTransactionId ?? null ,
51- payload . type ?? 'Unknown' ,
52- payload . value ?? 0 ,
53- payload . currency ?? null
54- ) ;
55- } ) ,
56- convertPurchaseResult : jest . fn ( ) ,
54+ convertPurchaseResult : jest . fn ( ( ) => mockPurchaseResult ) ,
5755 } ,
5856 } ;
5957} ) ;
@@ -75,13 +73,13 @@ function createConfig() {
7573 ) ;
7674}
7775
78- const sampleTransaction = {
79- productId : 'premium_product ' ,
80- transactionId : 'txn_123' ,
81- originalTransactionId : 'txn_001' ,
82- type : 'Subscription' ,
83- value : 9.99 ,
84- currency : 'USD' ,
76+ const samplePurchaseResult = {
77+ status : 'Success ' ,
78+ entitlements : null ,
79+ error : null ,
80+ isFallbackGenerated : false ,
81+ source : 'Api' ,
82+ storeTransaction : null ,
8583} ;
8684
8785const entitlementsPayload : Record < string , QEntitlement > = {
@@ -107,21 +105,17 @@ describe('QonversionInternal - DeferredPurchasesListener (native event)', () =>
107105 expect ( RNQonversion . onDeferredPurchaseCompleted ) . toHaveBeenCalled ( ) ;
108106 } ) ;
109107
110- it ( 'fires listener with DeferredTransaction when native event received' , ( ) => {
108+ it ( 'fires listener with PurchaseResult when native event received' , ( ) => {
111109 const instance = new QonversionInternal ( createConfig ( ) ) ;
112110 const listener : DeferredPurchasesListener = { onDeferredPurchaseCompleted : jest . fn ( ) } ;
113111
114112 instance . setDeferredPurchasesListener ( listener ) ;
115- fireEvent ( 'onDeferredPurchaseCompleted' , sampleTransaction ) ;
113+ fireEvent ( 'onDeferredPurchaseCompleted' , samplePurchaseResult ) ;
116114
117115 expect ( listener . onDeferredPurchaseCompleted ) . toHaveBeenCalledTimes ( 1 ) ;
118116 const arg = ( listener . onDeferredPurchaseCompleted as jest . Mock ) . mock . calls [ 0 ] [ 0 ] ;
119- expect ( arg ) . toBeInstanceOf ( DeferredTransaction ) ;
120- expect ( arg . productId ) . toBe ( 'premium_product' ) ;
121- expect ( arg . transactionId ) . toBe ( 'txn_123' ) ;
122- expect ( arg . type ) . toBe ( 'Subscription' ) ;
123- expect ( arg . value ) . toBe ( 9.99 ) ;
124- expect ( arg . currency ) . toBe ( 'USD' ) ;
117+ expect ( arg ) . toBeInstanceOf ( PurchaseResult ) ;
118+ expect ( arg . isSuccess ) . toBe ( true ) ;
125119 } ) ;
126120
127121 it ( 'does not fire listener when no listener is set' , ( ) => {
@@ -139,7 +133,7 @@ describe('QonversionInternal - DeferredPurchasesListener (native event)', () =>
139133 instance . setDeferredPurchasesListener ( listener1 ) ;
140134 instance . setDeferredPurchasesListener ( listener2 ) ;
141135
142- fireEvent ( 'onDeferredPurchaseCompleted' , sampleTransaction ) ;
136+ fireEvent ( 'onDeferredPurchaseCompleted' , samplePurchaseResult ) ;
143137
144138 expect ( listener1 . onDeferredPurchaseCompleted ) . not . toHaveBeenCalled ( ) ;
145139 expect ( listener2 . onDeferredPurchaseCompleted ) . toHaveBeenCalledTimes ( 1 ) ;
@@ -225,7 +219,7 @@ describe('QonversionInternal - both listeners coexist', () => {
225219 expect ( newListener . onDeferredPurchaseCompleted ) . not . toHaveBeenCalled ( ) ;
226220
227221 // Deferred purchase fires new listener only
228- fireEvent ( 'onDeferredPurchaseCompleted' , sampleTransaction ) ;
222+ fireEvent ( 'onDeferredPurchaseCompleted' , samplePurchaseResult ) ;
229223 expect ( oldListener . onEntitlementsUpdated ) . toHaveBeenCalledTimes ( 1 ) ; // still 1
230224 expect ( newListener . onDeferredPurchaseCompleted ) . toHaveBeenCalledTimes ( 1 ) ;
231225 } ) ;
0 commit comments