2025-02-11 12:42:20 +01:00
|
|
|
import pkg/asynctest/chronos/unittest
|
2025-02-11 10:54:58 +01:00
|
|
|
import ../../codexcrawler/state
|
|
|
|
|
import ../../codexcrawler/utils/asyncdataevent
|
|
|
|
|
import ../../codexcrawler/types
|
|
|
|
|
import ../../codexcrawler/config
|
|
|
|
|
|
2025-02-11 12:43:55 +01:00
|
|
|
type MockState* = ref object of State
|
2025-02-11 16:31:23 +01:00
|
|
|
stepper*: OnStep
|
2025-02-11 10:54:58 +01:00
|
|
|
|
|
|
|
|
proc createMockState*(): MockState =
|
|
|
|
|
MockState(
|
2025-02-11 15:33:40 +01:00
|
|
|
status: ApplicationStatus.Running,
|
2025-02-11 10:54:58 +01:00
|
|
|
config: Config(),
|
|
|
|
|
events: Events(
|
|
|
|
|
nodesFound: newAsyncDataEvent[seq[Nid]](),
|
|
|
|
|
newNodesDiscovered: newAsyncDataEvent[seq[Nid]](),
|
|
|
|
|
dhtNodeCheck: newAsyncDataEvent[DhtNodeCheckEventData](),
|
|
|
|
|
nodesExpired: newAsyncDataEvent[seq[Nid]](),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-11 16:31:23 +01:00
|
|
|
proc checkAllUnsubscribed*(s: MockState) =
|
2025-02-11 12:42:20 +01:00
|
|
|
check:
|
2025-02-11 16:31:23 +01:00
|
|
|
s.events.nodesFound.listeners == 0
|
|
|
|
|
s.events.newNodesDiscovered.listeners == 0
|
|
|
|
|
s.events.dhtNodeCheck.listeners == 0
|
|
|
|
|
s.events.nodesExpired.listeners == 0
|
|
|
|
|
|
|
|
|
|
method whileRunning*(s: MockState, step: OnStep, delay: Duration) {.async.} =
|
|
|
|
|
s.stepper = step
|