Skip to content

Commit

Permalink
refactor: use very_good_analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
felangel committed Jan 17, 2022
1 parent 12ea145 commit b3fb409
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 108 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ const validInputs = <FormzInput>[
print(Formz.validate(validInputs)); // true
const invalidInputs = <FormzInput>[
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(),
NameInput.dirty(),
NameInput.dirty(),
];
print(Formz.validate(invalidInputs)); // false
Expand Down
82 changes: 1 addition & 81 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,81 +1 @@
analyzer:
strong-mode:
implicit-casts: false
implicit-dynamic: false
exclude:
- test/.test_coverage.dart

linter:
rules:
- public_member_api_docs
- annotate_overrides
- avoid_empty_else
- avoid_function_literals_in_foreach_calls
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_types_as_parameter_names
- avoid_unused_constructor_parameters
- await_only_futures
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- comment_references
- constant_identifier_names
- control_flow_in_finally
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- hash_and_equals
- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- library_names
- library_prefixes
- list_remove_unrelated_type
- lines_longer_than_80_chars
- no_adjacent_strings_in_list
- no_duplicate_case_values
- non_constant_identifier_names
- null_closures
- omit_local_variable_types
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- prefer_adjacent_string_concatenation
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
- prefer_initializing_formals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_single_quotes
- prefer_typing_uninitialized_variables
- recursive_getters
- slash_for_doc_comments
- sort_constructors_first
- test_types_in_equals
- throw_in_finally
- type_init_formals
- unawaited_futures
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_statements
- unnecessary_this
- unrelated_type_equality_checks
- use_rethrow_when_possible
- valid_regexps
include: package:very_good_analysis/analysis_options.2.4.0.yaml
8 changes: 5 additions & 3 deletions example/main.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: avoid_print

import 'package:formz/formz.dart';

// Define input validation errors
Expand Down Expand Up @@ -40,9 +42,9 @@ void main() {
print(Formz.validate(validInputs)); // true

const invalidInputs = <FormzInput>[
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(),
NameInput.dirty(),
NameInput.dirty(),
];

print(Formz.validate(invalidInputs)); // false
Expand Down
3 changes: 3 additions & 0 deletions lib/formz.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
library formz;

import 'package:meta/meta.dart';

/// Enum representing the submission status of a form.
enum FormzSubmissionStatus {
/// The form is in the process of being submitted.
Expand Down Expand Up @@ -49,6 +51,7 @@ extension FormzSubmissionStatusX on FormzSubmissionStatus {
/// }
/// ```
/// {@endtemplate}
@immutable
abstract class FormzInput<T, E> {
const FormzInput._({required this.value, this.isPure = true});

Expand Down
4 changes: 4 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ version: 0.4.1
environment:
sdk: ">=2.14.0 <3.0.0"

dependencies:
meta: ^1.7.0

dev_dependencies:
coverage: ^0.14.2
test: ^1.16.0
very_good_analysis: ^2.4.0
40 changes: 19 additions & 21 deletions test/formz_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ void main() {
});

test('is not valid when containing a dirty/invalid value', () {
final form = NameInputFormzMixin(
name: const NameInput.dirty(value: ''),
);
final form = NameInputFormzMixin(name: const NameInput.dirty());
expect(form.isValid, isFalse);
expect(form.isNotValid, isTrue);
});
Expand Down Expand Up @@ -54,16 +52,16 @@ void main() {
});

test('isValid is false if super.dirty is used and input is invalid', () {
final isValid = NameInput.dirty(value: '').isValid;
final isValid = NameInput.dirty().isValid;
expect(isValid, isFalse);
});

test('error is NameInputError.empty if pure is used', () {
expect(NameInput.pure(value: '').error, NameInputError.empty);
expect(NameInput.pure().error, NameInputError.empty);
});

test('displayError is null if pure is used', () {
expect(NameInput.pure(value: '').displayError, isNull);
expect(NameInput.pure().displayError, isNull);
});

test('error is null if super.dirty is used and input is valid', () {
Expand All @@ -79,13 +77,13 @@ void main() {
test(
'error is NameInputError.empty '
'if super.dirty is used and input is invalid', () {
expect(NameInput.dirty(value: '').error, NameInputError.empty);
expect(NameInput.dirty().error, NameInputError.empty);
});

test(
'displayError is NameInputError.empty '
'if super.dirty is used and input is invalid', () {
expect(NameInput.dirty(value: '').displayError, NameInputError.empty);
expect(NameInput.dirty().displayError, NameInputError.empty);
});

test('isValid is true if super.pure is used and input is valid', () {
Expand All @@ -99,24 +97,24 @@ void main() {
});

test('isValid is false if super.pure is used and input is invalid', () {
expect(NameInput.pure(value: '').isValid, isFalse);
expect(NameInput.pure(value: '').isNotValid, isTrue);
expect(NameInput.pure().isValid, isFalse);
expect(NameInput.pure().isNotValid, isTrue);
});

test('isValid is false if super.dirty is used and input is invalid', () {
expect(NameInput.dirty(value: '').isValid, isFalse);
expect(NameInput.dirty(value: '').isNotValid, isTrue);
expect(NameInput.dirty().isValid, isFalse);
expect(NameInput.dirty().isNotValid, isTrue);
});

test(
'isNotValid is true if super.dirty is used '
'and input is invalid', () {
expect(NameInput.dirty(value: '').isValid, isFalse);
expect(NameInput.dirty(value: '').isNotValid, isTrue);
expect(NameInput.dirty().isValid, isFalse);
expect(NameInput.dirty().isNotValid, isTrue);
});

test('hashCode is correct', () {
final name = NameInput.pure(value: '');
final name = NameInput.pure();
final joe = NameInput.dirty(value: 'joe');
expect(name.hashCode, Object.hashAll([name.value, name.isPure]));
expect(joe.hashCode, Object.hashAll([joe.value, joe.isPure]));
Expand Down Expand Up @@ -189,19 +187,19 @@ void main() {
});

test('returns invalid for a pure/invalid input', () {
expect(Formz.validate([NameInput.pure(value: '')]), isFalse);
expect(Formz.validate([NameInput.pure()]), isFalse);
});

test('returns invalid for a dirty/invalid input', () {
expect(Formz.validate([NameInput.dirty(value: '')]), isFalse);
expect(Formz.validate([NameInput.dirty()]), isFalse);
});

test('returns invalid for multiple invalid inputs', () {
expect(
Formz.validate([
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(value: ''),
NameInput.dirty(),
NameInput.dirty(),
NameInput.dirty(),
]),
isFalse,
);
Expand All @@ -212,7 +210,7 @@ void main() {
Formz.validate([
NameInput.dirty(value: 'jan'),
NameInput.dirty(value: 'jim'),
NameInput.dirty(value: ''),
NameInput.dirty(),
]),
isFalse,
);
Expand Down

0 comments on commit b3fb409

Please sign in to comment.