2025-02-11 12:42:20 +01:00
|
|
|
import pkg/asynctest/chronos/unittest
|
2025-02-12 14:48:57 +01:00
|
|
|
import ../../../codexcrawler/state
|
|
|
|
|
import ../../../codexcrawler/utils/asyncdataevent
|
|
|
|
|
import ../../../codexcrawler/types
|
|
|
|
|
import ../../../codexcrawler/config
|
2025-02-11 10:54:58 +01:00
|
|
|
|
2025-02-11 12:43:55 +01:00
|
|
|
type MockState* = ref object of State
|
2025-02-13 12:35:19 +01:00
|
|
|
steppers*: seq[OnStep]
|
|
|
|
|
delays*: seq[Duration]
|
2025-02-11 10:54:58 +01:00
|
|
|
|
2025-02-12 13:25:37 +01:00
|
|
|
proc checkAllUnsubscribed*(s: MockState) =
|
|
|
|
|
check:
|
|
|
|
|
s.events.nodesFound.listeners == 0
|
|
|
|
|
s.events.newNodesDiscovered.listeners == 0
|
|
|
|
|
s.events.dhtNodeCheck.listeners == 0
|
2025-02-13 14:55:45 +01:00
|
|
|
s.events.nodesToRevisit.listeners == 0
|
2025-02-12 13:25:37 +01:00
|
|
|
|
2025-06-02 16:16:41 +02:00
|
|
|
method whileRunning*(
|
|
|
|
|
s: MockState, step: OnStep, delay: Duration
|
|
|
|
|
) {.async: (raises: []).} =
|
2025-02-13 12:35:19 +01:00
|
|
|
s.steppers.add(step)
|
|
|
|
|
s.delays.add(delay)
|
2025-02-12 13:25:37 +01:00
|
|
|
|
2025-02-11 10:54:58 +01:00
|
|
|
proc createMockState*(): MockState =
|
|
|
|
|
MockState(
|
2025-02-11 15:33:40 +01:00
|
|
|
status: ApplicationStatus.Running,
|
2025-03-24 09:27:52 +01:00
|
|
|
config: Config(dhtEnable: true, marketplaceEnable: true, requestCheckDelay: 4),
|
2025-02-11 10:54:58 +01:00
|
|
|
events: Events(
|
|
|
|
|
nodesFound: newAsyncDataEvent[seq[Nid]](),
|
|
|
|
|
newNodesDiscovered: newAsyncDataEvent[seq[Nid]](),
|
|
|
|
|
dhtNodeCheck: newAsyncDataEvent[DhtNodeCheckEventData](),
|
2025-02-13 14:55:45 +01:00
|
|
|
nodesToRevisit: newAsyncDataEvent[seq[Nid]](),
|
2025-02-15 10:36:52 +01:00
|
|
|
nodesDeleted: newAsyncDataEvent[seq[Nid]](),
|
2025-02-11 10:54:58 +01:00
|
|
|
),
|
2025-02-13 12:35:19 +01:00
|
|
|
steppers: newSeq[OnStep](),
|
|
|
|
|
delays: newSeq[Duration](),
|
2025-02-11 10:54:58 +01:00
|
|
|
)
|