run<A extends InteractionIntegration> static method

Future<AdapterConformanceResult> run<A extends InteractionIntegration>({
  1. required A create(
    1. bool replaying
    ),
  2. required FutureOr<Object?> scenario(
    1. A adapter
    ),
  3. Redactor? redactor,
  4. Duration settle = const Duration(milliseconds: 50),
})

Implementation

static Future<AdapterConformanceResult>
run<A extends InteractionIntegration>({
  required A Function(bool replaying) create,
  required FutureOr<Object?> Function(A adapter) scenario,
  Redactor? redactor,
  Duration settle = const Duration(milliseconds: 50),
}) async {
  final capture = InteractionHarness.capture(redactor: redactor);
  final captureAdapter = create(false);
  await capture.setUp([captureAdapter]);
  final captured = await scenario(captureAdapter);
  await Future<void>.delayed(settle);
  final dependencies = capture.dependencies();

  final replay = InteractionHarness.replay(
    capture.encodedEvents(),
    dependencies: dependencies,
    redactor: redactor,
  );
  final replayAdapter = create(true);
  await replay.setUp([replayAdapter]);
  final replayed = await scenario(replayAdapter);
  await Future<void>.delayed(settle);
  final divergences = replay.finish();
  return AdapterConformanceResult(
    captured: captured,
    replayed: replayed,
    events: capture.events,
    dependencies: dependencies,
    divergences: divergences,
    eligibility: capture.eligibility(),
  );
}