expectStateData function

void expectStateData(
  1. WidgetTester tester,
  2. Finder finder,
  3. dynamic matcher
)

Assert the stateData of a NyPage or NyState widget.

Finds the widget using finder and checks its stateData against the provided matcher. The finder should match a StatefulWidget whose state extends NyBaseState.

Example:

fireStateUpdate('MyWidget', data: 42);
await tester.pump();
expectStateData(tester, find.byType(MyWidget), equals(42));

Implementation

void expectStateData(WidgetTester tester, Finder finder, dynamic matcher) {
  final elements = finder.evaluate();
  if (elements.isEmpty) {
    fail('No widget found for finder: $finder');
  }
  final element = elements.first;

  if (element is StatefulElement && element.state is NyBaseState) {
    expect(
      (element.state as NyBaseState).stateData,
      matcher,
      reason: 'State data did not match expected value',
    );
  } else {
    fail(
      'Widget state is not a NyBaseState. '
      'Element: ${element.runtimeType}',
    );
  }
}