2025-06-02 16:16:41 +02:00

38 lines
1.2 KiB
Nim

import pkg/asynctest/chronos/unittest
import ../../../codexcrawler/state
import ../../../codexcrawler/utils/asyncdataevent
import ../../../codexcrawler/types
import ../../../codexcrawler/config
type MockState* = ref object of State
steppers*: seq[OnStep]
delays*: seq[Duration]
proc checkAllUnsubscribed*(s: MockState) =
check:
s.events.nodesFound.listeners == 0
s.events.newNodesDiscovered.listeners == 0
s.events.dhtNodeCheck.listeners == 0
s.events.nodesToRevisit.listeners == 0
method whileRunning*(
s: MockState, step: OnStep, delay: Duration
) {.async: (raises: []).} =
s.steppers.add(step)
s.delays.add(delay)
proc createMockState*(): MockState =
MockState(
status: ApplicationStatus.Running,
config: Config(dhtEnable: true, marketplaceEnable: true, requestCheckDelay: 4),
events: Events(
nodesFound: newAsyncDataEvent[seq[Nid]](),
newNodesDiscovered: newAsyncDataEvent[seq[Nid]](),
dhtNodeCheck: newAsyncDataEvent[DhtNodeCheckEventData](),
nodesToRevisit: newAsyncDataEvent[seq[Nid]](),
nodesDeleted: newAsyncDataEvent[seq[Nid]](),
),
steppers: newSeq[OnStep](),
delays: newSeq[Duration](),
)