2025-03-21 09:41:05 +01:00

61 lines
1.5 KiB
Nim

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()
crawler = ChainCrawler.new(state, store, marketplace)
(await crawler.start()).tryGet()
teardown:
(await crawler.stop()).tryGet()
state.checkAllUnsubscribed()
# subscribe to newrequests
# iterate past requests on start-up
# push them into the request store
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:
store.updateRid == rid
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:
store.updateRid == rid