@@ -12,6 +12,7 @@ import (
12
12
"github.com/stellar/wallet-backend/internal/metrics"
13
13
"github.com/stellar/wallet-backend/internal/utils"
14
14
"github.com/stretchr/testify/assert"
15
+ "github.com/stretchr/testify/mock"
15
16
"github.com/stretchr/testify/require"
16
17
)
17
18
@@ -22,13 +23,15 @@ func TestPaymentModelAddPayment(t *testing.T) {
22
23
dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
23
24
require .NoError (t , err )
24
25
defer dbConnectionPool .Close ()
25
- sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
26
- require .NoError (t , err )
27
- metricsService := metrics .NewMetricsService (sqlxDB )
26
+
27
+ mockMetricsService := metrics .NewMockMetricsService ()
28
+ mockMetricsService .On ("ObserveDBQueryDuration" , "INSERT" , "ingest_payments" , mock .Anything ).Return ()
29
+ mockMetricsService .On ("IncDBQuery" , "INSERT" , "ingest_payments" ).Return ()
30
+ defer mockMetricsService .AssertExpectations (t )
28
31
29
32
m := & PaymentModel {
30
33
DB : dbConnectionPool ,
31
- MetricsService : metricsService ,
34
+ MetricsService : mockMetricsService ,
32
35
}
33
36
ctx := context .Background ()
34
37
@@ -150,14 +153,16 @@ func TestPaymentModelGetLatestLedgerSynced(t *testing.T) {
150
153
dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
151
154
require .NoError (t , err )
152
155
defer dbConnectionPool .Close ()
153
- sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
154
- require .NoError (t , err )
155
- metricsService := metrics .NewMetricsService (sqlxDB )
156
+
157
+ mockMetricsService := metrics .NewMockMetricsService ()
158
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_store" , mock .Anything ).Return ().Times (2 )
159
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_store" ).Return ().Times (2 )
160
+ defer mockMetricsService .AssertExpectations (t )
156
161
157
162
ctx := context .Background ()
158
163
m := & PaymentModel {
159
164
DB : dbConnectionPool ,
160
- MetricsService : metricsService ,
165
+ MetricsService : mockMetricsService ,
161
166
}
162
167
163
168
const key = "ingest_store_key"
@@ -179,14 +184,16 @@ func TestPaymentModelUpdateLatestLedgerSynced(t *testing.T) {
179
184
dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
180
185
require .NoError (t , err )
181
186
defer dbConnectionPool .Close ()
182
- sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
183
- require .NoError (t , err )
184
- metricsService := metrics .NewMetricsService (sqlxDB )
187
+
188
+ mockMetricsService := metrics .NewMockMetricsService ()
189
+ mockMetricsService .On ("ObserveDBQueryDuration" , "INSERT" , "ingest_store" , mock .Anything ).Return ().Times (1 )
190
+ mockMetricsService .On ("IncDBQuery" , "INSERT" , "ingest_store" ).Return ().Times (1 )
191
+ defer mockMetricsService .AssertExpectations (t )
185
192
186
193
ctx := context .Background ()
187
194
m := & PaymentModel {
188
195
DB : dbConnectionPool ,
189
- MetricsService : metricsService ,
196
+ MetricsService : mockMetricsService ,
190
197
}
191
198
192
199
const key = "ingest_store_key"
@@ -205,15 +212,8 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
205
212
dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
206
213
require .NoError (t , err )
207
214
defer dbConnectionPool .Close ()
208
- sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
209
- require .NoError (t , err )
210
- metricsService := metrics .NewMetricsService (sqlxDB )
211
215
212
216
ctx := context .Background ()
213
- m := & PaymentModel {
214
- DB : dbConnectionPool ,
215
- MetricsService : metricsService ,
216
- }
217
217
218
218
dbPayments := []Payment {
219
219
{OperationID : "1" , OperationType : xdr .OperationTypePayment .String (), TransactionID : "11" , TransactionHash : "c370ff20144e4c96b17432b8d14664c1" , FromAddress : "GAZ37ZO4TU3H" , ToAddress : "GDD2HQO6IOFT" , SrcAssetCode : "XLM" , SrcAssetIssuer : "" , SrcAssetType : xdr .AssetTypeAssetTypeNative .String (), SrcAmount : 10 , DestAssetCode : "XLM" , DestAssetIssuer : "" , DestAssetType : xdr .AssetTypeAssetTypeNative .String (), DestAmount : 10 , CreatedAt : time .Date (2024 , 6 , 21 , 0 , 0 , 0 , 0 , time .UTC ), Memo : nil , MemoType : xdr .MemoTypeMemoNone .String ()},
@@ -225,6 +225,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
225
225
InsertTestPayments (t , ctx , dbPayments , dbConnectionPool )
226
226
227
227
t .Run ("no_filter_desc" , func (t * testing.T ) {
228
+ mockMetricsService := metrics .NewMockMetricsService ()
229
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
230
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
231
+ defer mockMetricsService .AssertExpectations (t )
232
+
233
+ m := & PaymentModel {
234
+ DB : dbConnectionPool ,
235
+ MetricsService : mockMetricsService ,
236
+ }
237
+
228
238
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , "" , "" , DESC , 2 )
229
239
require .NoError (t , err )
230
240
@@ -238,6 +248,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
238
248
})
239
249
240
250
t .Run ("no_filter_asc" , func (t * testing.T ) {
251
+ mockMetricsService := metrics .NewMockMetricsService ()
252
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
253
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
254
+ defer mockMetricsService .AssertExpectations (t )
255
+
256
+ m := & PaymentModel {
257
+ DB : dbConnectionPool ,
258
+ MetricsService : mockMetricsService ,
259
+ }
260
+
241
261
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , "" , "" , ASC , 2 )
242
262
require .NoError (t , err )
243
263
@@ -251,6 +271,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
251
271
})
252
272
253
273
t .Run ("filter_address" , func (t * testing.T ) {
274
+ mockMetricsService := metrics .NewMockMetricsService ()
275
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
276
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
277
+ defer mockMetricsService .AssertExpectations (t )
278
+
279
+ m := & PaymentModel {
280
+ DB : dbConnectionPool ,
281
+ MetricsService : mockMetricsService ,
282
+ }
283
+
254
284
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , dbPayments [1 ].FromAddress , "" , "" , DESC , 2 )
255
285
require .NoError (t , err )
256
286
@@ -263,6 +293,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
263
293
})
264
294
265
295
t .Run ("filter_after_id_desc" , func (t * testing.T ) {
296
+ mockMetricsService := metrics .NewMockMetricsService ()
297
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
298
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
299
+ defer mockMetricsService .AssertExpectations (t )
300
+
301
+ m := & PaymentModel {
302
+ DB : dbConnectionPool ,
303
+ MetricsService : mockMetricsService ,
304
+ }
305
+
266
306
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , "" , dbPayments [3 ].OperationID , DESC , 2 )
267
307
require .NoError (t , err )
268
308
@@ -276,6 +316,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
276
316
})
277
317
278
318
t .Run ("filter_after_id_asc" , func (t * testing.T ) {
319
+ mockMetricsService := metrics .NewMockMetricsService ()
320
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
321
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
322
+ defer mockMetricsService .AssertExpectations (t )
323
+
324
+ m := & PaymentModel {
325
+ DB : dbConnectionPool ,
326
+ MetricsService : mockMetricsService ,
327
+ }
328
+
279
329
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , "" , dbPayments [3 ].OperationID , ASC , 2 )
280
330
require .NoError (t , err )
281
331
@@ -288,6 +338,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
288
338
})
289
339
290
340
t .Run ("filter_before_id_desc" , func (t * testing.T ) {
341
+ mockMetricsService := metrics .NewMockMetricsService ()
342
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
343
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
344
+ defer mockMetricsService .AssertExpectations (t )
345
+
346
+ m := & PaymentModel {
347
+ DB : dbConnectionPool ,
348
+ MetricsService : mockMetricsService ,
349
+ }
350
+
291
351
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , dbPayments [2 ].OperationID , "" , DESC , 2 )
292
352
require .NoError (t , err )
293
353
@@ -301,6 +361,16 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
301
361
})
302
362
303
363
t .Run ("filter_before_id_asc" , func (t * testing.T ) {
364
+ mockMetricsService := metrics .NewMockMetricsService ()
365
+ mockMetricsService .On ("ObserveDBQueryDuration" , "SELECT" , "ingest_payments" , mock .Anything ).Return ().Times (2 )
366
+ mockMetricsService .On ("IncDBQuery" , "SELECT" , "ingest_payments" ).Return ().Times (2 )
367
+ defer mockMetricsService .AssertExpectations (t )
368
+
369
+ m := & PaymentModel {
370
+ DB : dbConnectionPool ,
371
+ MetricsService : mockMetricsService ,
372
+ }
373
+
304
374
payments , prevExists , nextExists , err := m .GetPaymentsPaginated (ctx , "" , dbPayments [2 ].OperationID , "" , ASC , 2 )
305
375
require .NoError (t , err )
306
376
@@ -314,6 +384,13 @@ func TestPaymentModelGetPaymentsPaginated(t *testing.T) {
314
384
})
315
385
316
386
t .Run ("filter_before_id_after_id_asc" , func (t * testing.T ) {
387
+ mockMetricsService := metrics .NewMockMetricsService ()
388
+
389
+ m := & PaymentModel {
390
+ DB : dbConnectionPool ,
391
+ MetricsService : mockMetricsService ,
392
+ }
393
+
317
394
_ , _ , _ , err := m .GetPaymentsPaginated (ctx , "" , dbPayments [4 ].OperationID , dbPayments [2 ].OperationID , ASC , 2 )
318
395
assert .ErrorContains (t , err , "at most one cursor may be provided, got afterId and beforeId" )
319
396
})
0 commit comments