MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / TestLineageOutboxProcessor

Function TestLineageOutboxProcessor

lineage_test.go:1325–1416  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1323}
1324
1325func TestLineageOutboxProcessor(t *testing.T) {
1326 t.Run("Creates processor with default values", func(t *testing.T) {
1327 mockDS := new(mocks.MockDataSource)
1328 ledgerforgeInstance := &LedgerForge{datasource: mockDS}
1329
1330 processor := NewLineageOutboxProcessor(ledgerforgeInstance)
1331
1332 assert.NotNil(t, processor)
1333 assert.Equal(t, 100, processor.batchSize)
1334 assert.Equal(t, 1*time.Second, processor.pollInterval)
1335 assert.Equal(t, 30*time.Second, processor.lockDuration)
1336 assert.False(t, processor.IsRunning())
1337 })
1338
1339 t.Run("Configures processor with custom values", func(t *testing.T) {
1340 mockDS := new(mocks.MockDataSource)
1341 ledgerforgeInstance := &LedgerForge{datasource: mockDS}
1342
1343 processor := NewLineageOutboxProcessor(ledgerforgeInstance).
1344 WithBatchSize(50).
1345 WithPollInterval(5 * time.Second).
1346 WithLockDuration(60 * time.Second)
1347
1348 assert.Equal(t, 50, processor.batchSize)
1349 assert.Equal(t, 5*time.Second, processor.pollInterval)
1350 assert.Equal(t, 60*time.Second, processor.lockDuration)
1351 })
1352
1353 t.Run("Start and stop processor", func(t *testing.T) {
1354 mockDS := new(mocks.MockDataSource)
1355 ledgerforgeInstance := &LedgerForge{datasource: mockDS}
1356
1357 // Mock ClaimPendingOutboxEntries to return empty slice
1358 mockDS.On("ClaimPendingOutboxEntries", mock.Anything, mock.Anything, mock.Anything).
1359 Return([]model.LineageOutbox{}, nil).Maybe()
1360
1361 processor := NewLineageOutboxProcessor(ledgerforgeInstance).
1362 WithPollInterval(100 * time.Millisecond)
1363
1364 ctx := context.Background()
1365
1366 // Start processor
1367 processor.Start(ctx)
1368 assert.True(t, processor.IsRunning())
1369
1370 // Wait a bit for at least one poll cycle
1371 time.Sleep(150 * time.Millisecond)
1372
1373 // Stop processor
1374 processor.Stop()
1375 assert.False(t, processor.IsRunning())
1376 })
1377
1378 t.Run("Processes batch of entries", func(t *testing.T) {
1379 mockDS := new(mocks.MockDataSource)
1380
1381 txn := &model.Transaction{
1382 TransactionID: "txn_batch_1",

Callers

nothing calls this directly

Calls 7

IsRunningMethod · 0.95
StartMethod · 0.95
StopMethod · 0.95
WithLockDurationMethod · 0.80
WithPollIntervalMethod · 0.80
WithBatchSizeMethod · 0.80

Tested by

no test coverage detected