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