2025-03-20 15:27:17 +01:00
|
|
|
import pkg/chronos
|
|
|
|
|
import pkg/questionable
|
|
|
|
|
import pkg/questionable/results
|
|
|
|
|
import pkg/asynctest/chronos/unittest
|
|
|
|
|
import std/sequtils
|
|
|
|
|
import std/options
|
|
|
|
|
|
|
|
|
|
import ../../../codexcrawler/components/chaincrawler
|
|
|
|
|
import ../../../codexcrawler/services/marketplace/market
|
|
|
|
|
import ../../../codexcrawler/types
|
|
|
|
|
import ../../../codexcrawler/state
|
|
|
|
|
import ../mocks/mockstate
|
|
|
|
|
import ../mocks/mockrequeststore
|
|
|
|
|
import ../mocks/mockmarketplace
|
|
|
|
|
import ../helpers
|
|
|
|
|
|
|
|
|
|
suite "ChainCrawler":
|
|
|
|
|
var
|
|
|
|
|
state: MockState
|
|
|
|
|
store: MockRequestStore
|
|
|
|
|
marketplace: MockMarketplaceService
|
|
|
|
|
crawler: ChainCrawler
|
|
|
|
|
|
|
|
|
|
setup:
|
|
|
|
|
state = createMockState()
|
|
|
|
|
store = createMockRequestStore()
|
|
|
|
|
marketplace = createMockMarketplaceService()
|
2025-03-21 09:41:05 +01:00
|
|
|
|
2025-03-20 15:27:17 +01:00
|
|
|
crawler = ChainCrawler.new(state, store, marketplace)
|
|
|
|
|
(await crawler.start()).tryGet()
|
|
|
|
|
|
|
|
|
|
teardown:
|
|
|
|
|
state.checkAllUnsubscribed()
|
|
|
|
|
|
|
|
|
|
test "start should subscribe to new requests":
|
|
|
|
|
check:
|
|
|
|
|
marketplace.subNewRequestsCallback.isSome()
|
|
|
|
|
|
|
|
|
|
test "new-request subscription should add requestId to store":
|
|
|
|
|
let rid = genRid()
|
|
|
|
|
(await (marketplace.subNewRequestsCallback.get())(rid)).tryGet()
|
|
|
|
|
|
|
|
|
|
check:
|
2025-03-24 14:11:32 +01:00
|
|
|
store.addRid == rid
|
2025-03-20 15:27:17 +01:00
|
|
|
|
|
|
|
|
test "start should iterate past requests and add then to store":
|
|
|
|
|
check:
|
|
|
|
|
marketplace.iterRequestsCallback.isSome()
|
|
|
|
|
|
|
|
|
|
let rid = genRid()
|
|
|
|
|
(await marketplace.iterRequestsCallback.get()(rid)).tryGet()
|
|
|
|
|
|
|
|
|
|
check:
|
2025-03-24 14:11:32 +01:00
|
|
|
store.addRid == rid
|