diff --git a/lib/bloc/logic.dart b/lib/bloc/logic.dart index 1806396..52b7755 100644 --- a/lib/bloc/logic.dart +++ b/lib/bloc/logic.dart @@ -4,9 +4,6 @@ class ProcessesLogic{ int calculateRent(int days, int carPrice, int polizaPrice) { - print(days); - print(carPrice); - print(polizaPrice); return (carPrice * days) + polizaPrice; } diff --git a/pubspec.lock b/pubspec.lock index dbbb3e3..ad38b4a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,34 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "9.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.40.2" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0" async: dependency: transitive description: @@ -29,6 +57,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0-nullsafety" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" clock: dependency: transitive description: @@ -50,6 +85,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.5" date_range_picker: dependency: "direct main" description: @@ -71,11 +120,23 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0-nullsafety" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.0-nullsafety.1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_driver: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" flutter_svg: dependency: "direct main" description: @@ -84,10 +145,43 @@ packages: source: hosted version: "0.18.0" flutter_test: - dependency: "direct dev" + dependency: transitive description: flutter source: sdk version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" intl: dependency: "direct main" description: @@ -95,6 +189,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.16.1" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3-nullsafety" + json_rpc_2: + dependency: transitive + description: + name: json_rpc_2 + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: @@ -109,6 +231,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0-nullsafety.2" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.7" + node_interop: + dependency: transitive + description: + name: node_interop + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_io: + dependency: transitive + description: + name: node_io + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.12" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" path: dependency: transitive description: @@ -130,6 +287,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.4" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0-nullsafety" petitparser: dependency: transitive description: @@ -137,11 +301,81 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0-nullsafety.1" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0-nullsafety" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0-nullsafety.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.4" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.9" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.8" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.3" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.99" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0-nullsafety.1" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.10-nullsafety" source_span: dependency: transitive description: @@ -170,6 +404,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0-nullsafety" + sync_http: + dependency: transitive + description: + name: sync_http + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" term_glyph: dependency: transitive description: @@ -177,6 +418,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0-nullsafety" + test: + dependency: "direct dev" + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0-nullsafety.2" test_api: dependency: transitive description: @@ -184,6 +432,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.2.19-nullsafety" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.12-nullsafety.2" typed_data: dependency: transitive description: @@ -198,6 +453,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0-nullsafety.2" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.0" + vm_service_client: + dependency: transitive + description: + name: vm_service_client + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.6+2" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.7+15" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + webdriver: + dependency: transitive + description: + name: webdriver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.3" xml: dependency: transitive description: @@ -205,6 +502,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.4.1" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" sdks: - dart: ">=2.10.0-0.0.dev <2.10.0" + dart: ">=2.10.0-4.0.dev <2.10.0" flutter: ">=1.18.0-6.0.pre <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index f3754ce..294fceb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,8 +36,9 @@ dependencies: dev_dependencies: - flutter_test: + flutter_driver: sdk: flutter + test: any # For information on the generic Dart part of this file, see the diff --git a/test/calculator_screen_test.dart b/test/calculator_screen_test.dart new file mode 100644 index 0000000..1de5e8f --- /dev/null +++ b/test/calculator_screen_test.dart @@ -0,0 +1,68 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:project_test_unit/screens/calculator_screen.dart'; + + +main() { + + testWidgets("Prueba de pantalla calcular alquiler", (WidgetTester test) async{ + + final MaterialApp app = MaterialApp( + + home: Scaffold(body: CalculatorScreen(),), + ); + + + await test.pumpWidget(app); + final datainput = find.byKey(Key("datapicker")); + await test.tap(datainput); + await test.pump(new Duration(milliseconds: 50)); + await test.tap(find.text("15")); + await test.pump(); + await test.tap(find.text("24")); + await test.pump(); + await test.longPress(find.text("OK")); + await test.pump(); + + expect(find.text("09/15/2020-09/24/2020"), findsOneWidget); + + var dropdown = find.byKey(Key("DropdownPrincipal")); + await test.tap(dropdown); + await test.pump(new Duration(milliseconds: 50)); + + await test.longPress(find.text("Automatico").at(1)); + + await test.pump(); + + final result = dropdown.evaluate().single.widget as DropdownButton; + expect(result.value,equals('2000')); + + await test.tap(find.text("Todo riesgo")); + await test.pump(new Duration(microseconds: 50)); + await test.tap(find.text("Calcular")); + await test.pump(); + + final resultado = find.byKey(Key("test")); + final data = resultado.evaluate().single.widget as Text; + + expect(data.data, equals("\$118000")); + + + + + + + + + + + + + + + }); + + + + +} diff --git a/test/process_logic_test.dart b/test/process_logic_test.dart new file mode 100644 index 0000000..51e1280 --- /dev/null +++ b/test/process_logic_test.dart @@ -0,0 +1,72 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:project_test_unit/bloc/logic.dart'; + + +main(){ + + group("Grupo de pruebas process logic",(){ + + ProcessesLogic process; + + setUpAll((){ + + process = new ProcessesLogic(); + + }); + + + test("Prueba de calcular renta", (){ + + // Act + + int result = process.calculateRent(4, 2000, 120000); + + + // Asssert + + expect(result, 128000); + + + + }); + + test("Calcular palindromo correcto", (){ + + + // Act + + bool result = process.calculatePalindromo(292); + expect(result, true); + + + }); + + + test("Calcular Palindromo incorrecto",(){ + + // Act + bool result = process.calculatePalindromo(153); + + // Assert + + expect(result, false); + + + }); + + + test("Generar excepcion", (){ + + expect(()=> process.calculatePalindromo(1), throwsA(predicate((e)=> e is ArgumentError && e.message == 'This is a test exception'))); + + }); + + + + + }); + + + + +} \ No newline at end of file diff --git a/test/suma_test.dart b/test/suma_test.dart new file mode 100644 index 0000000..bd38fbc --- /dev/null +++ b/test/suma_test.dart @@ -0,0 +1,25 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:project_test_unit/model/suma.dart' as addTwoNumbers; + + +main() { + + test("Prueba de suma", (){ + + // Arragen + + const a = 2; + const b = 3; + + // Act + + int result = addTwoNumbers.addTwoNumbers(a, b); + + // Assert + expect(result==5, isTrue); + + + }); + + +} \ No newline at end of file diff --git a/test/top_meu_test.dart b/test/top_meu_test.dart new file mode 100644 index 0000000..c7478a9 --- /dev/null +++ b/test/top_meu_test.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:project_test_unit/widgets/top_menu.dart'; + +main(){ + + + final MaterialApp app = MaterialApp( + home: Scaffold( + body: HomeHeader(), + ), + + ); + + testWidgets("Prueba Widget top menu", (WidgetTester test)async{ + + await test.pumpWidget(app); + final imageCar = find.byKey(Key('assets/icons/car2.svg')); + final image = imageCar.evaluate().single.widget as SvgPicture; + + expect((image.pictureProvider as ExactAssetPicture).assetName,equals("assets/icons/car2.svg")); + expect(find.text("Deportivo"), findsOneWidget); + expect(find.byType(ListView),findsOneWidget); + + + + }); + + +} \ No newline at end of file diff --git a/test_driver/app.dart b/test_driver/app.dart new file mode 100644 index 0000000..d02e5f9 --- /dev/null +++ b/test_driver/app.dart @@ -0,0 +1,9 @@ +import 'package:flutter_driver/driver_extension.dart'; +import 'package:project_test_unit/main.dart' as app; + +void main() { + enableFlutterDriverExtension(); + app.main(); + + +} \ No newline at end of file diff --git a/test_driver/app_test.dart b/test_driver/app_test.dart new file mode 100644 index 0000000..faab609 --- /dev/null +++ b/test_driver/app_test.dart @@ -0,0 +1,53 @@ +import 'package:test/test.dart'; +import 'package:flutter_driver/flutter_driver.dart'; + +void main() { + group("Flutter test main app", () { + SerializableFinder elemento = find.text("Autos Populares"); + SerializableFinder menuAlquiler = find.text("Calcular Alquiler"); + SerializableFinder datainput = find.byValueKey("datapicker"); + SerializableFinder dataInputNumber1 = find.text("15"); + SerializableFinder dataInputNumber2 = find.text("24"); + SerializableFinder dataInputOK = find.text("OK"); + + SerializableFinder dropdown = find.byValueKey("DropdownPrincipal"); + + SerializableFinder dropdownElement = find.text("Automatico"); + SerializableFinder selectElement = find.text("Todo riesgo"); + SerializableFinder boton = find.text("Calcular"); + + FlutterDriver driver; + + setUpAll(() async { + driver = await FlutterDriver.connect(); + }); + tearDownAll(() async { + if (driver != null) { + driver.close(); + } + }); + test( + "Navegar a la pagina calcular alquiler", + () async { + await driver.runUnsynchronized(() async { + await driver.waitFor(elemento); + await driver.clearTimeline(); + await driver.tap(menuAlquiler); + await driver.tap(datainput); + await driver.tap(dataInputNumber1); + await driver.tap(dataInputNumber2); + await driver.tap(dataInputOK); + await driver.tap(dropdown); + await driver.tap(dropdownElement); + await driver.tap(selectElement); + await driver.tap(boton); + + SerializableFinder resultado = find.text("\$118000"); + expect(await driver.getText(resultado),"\$118000"); + }, + timeout: Duration(minutes: 1), + ); + }, + ); + }); +} \ No newline at end of file