expectValue method

void expectValue(
  1. String id,
  2. dynamic expected
)

Implementation

void expectValue(String id, dynamic expected) {
  final finder = finderForId(id);
  if (finder.evaluate().isEmpty) {
    throw EnsembleTestFailure(
      'Expected widget with id "$id" to be visible for expectValue.',
    );
  }

  final editableFinder = find.descendant(
    of: finder,
    matching: find.byType(EditableText),
  );
  if (editableFinder.evaluate().isNotEmpty) {
    final editable = tester.widget<EditableText>(editableFinder);
    final actual = editable.controller.text;
    if (actual != expected?.toString()) {
      throw EnsembleTestFailure(
        'Expected input "$id" value "$expected", but got "$actual".',
      );
    }
    return;
  }

  final textFieldFinder = find.descendant(
    of: finder,
    matching: find.byType(TextField),
  );
  if (textFieldFinder.evaluate().isNotEmpty) {
    final field = tester.widget<TextField>(textFieldFinder);
    final actual = field.controller?.text;
    if (actual != expected?.toString()) {
      throw EnsembleTestFailure(
        'Expected input "$id" value "$expected", but got "$actual".',
      );
    }
    return;
  }

  throw EnsembleTestFailure(
    'No EditableText or TextField found under widget id "$id".',
  );
}