mirrored_repositories/apidash/test
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:apidash/widgets/textfields.dart';
import 'package:apidash/consts.dart';
import '../test_consts.dart';

void main() {
  testWidgets('Testing URL Field', (tester) async {
    await tester.pumpWidget(
      MaterialApp(
        title: 'URL Field',
        theme: kThemeDataDark,
        home: const Scaffold(
          body: Column(children: [URLField(selectedId: '2')]),
        ),
      ),
    );

    expect(find.byType(TextFormField), findsOneWidget);
    expect(find.byKey(const Key("url-2")), findsOneWidget);
    expect(find.byKey(const Key("2")), findsNothing);
    expect(find.text(kHintTextUrlCard), findsOneWidget);
    var txtForm = find.byKey(const Key("url-2"));
    await tester.enterText(txtForm, 'entering 123');
    await tester.pump();
    expect(find.text('entering 123'), findsOneWidget);
  });
  testWidgets('Testing Cell Field', (tester) async {
    await tester.pumpWidget(
      MaterialApp(
        title: 'CellField',
        theme: kThemeDataLight,
        home: const Scaffold(
          body: Column(
            children: [
              CellField(
                keyId: "4",
                hintText: "Passing some hint text",
                initialValue: '2',
              ),
            ],
          ),
        ),
      ),
    );

    expect(find.byType(TextFormField), findsOneWidget);
    expect(find.byKey(const Key("4")), findsOneWidget);
    expect(find.text("2"), findsOneWidget);

    var txtField = find.byKey(const Key("4"));
    await tester.enterText(txtField, '');
    await tester.pumpAndSettle();

    expect(find.text("Passing some hint text"), findsOneWidget);
    await tester.enterText(txtField, 'entering 123 for cell field');
    await tester.pumpAndSettle();
    expect(find.text('entering 123 for cell field'), findsOneWidget);
  });

  testWidgets('URL Field sends request on enter keystroke', (tester) async {
    bool wasSubmitCalled = false;

    void testSubmit(String val) {
      wasSubmitCalled = true;
    }

    await tester.pumpWidget(
      MaterialApp(
        title: 'URL Field',
        theme: kThemeDataDark,
        home: Scaffold(
          body: Column(children: [
            URLField(
              selectedId: '2',
              onFieldSubmitted: testSubmit,
            )
          ]),
        ),
      ),
    );

    // ensure URLField is blank
    expect(find.byType(TextFormField), findsOneWidget);
    expect(find.textContaining('Enter API endpoint '), findsOneWidget);
    expect(wasSubmitCalled, false);

    // modify value and press enter
    var txtForm = find.byKey(const Key("url-2"));
    await tester.enterText(txtForm, 'entering 123');
    await tester.testTextInput.receiveAction(TextInputAction.done);
    await tester.pump();

    // check if value was updated
    expect(wasSubmitCalled, true);
  });
}
