-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* expand test coverage * More tests, fix Index.equals * test toString of ProcessorError
- Loading branch information
Showing
12 changed files
with
765 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
floor_generator/lib/processor/error/change_method_processor_error.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import 'package:analyzer/dart/element/element.dart'; | ||
import 'package:floor_generator/misc/constants.dart'; | ||
import 'package:floor_annotation/floor_annotation.dart' as annotations | ||
show OnConflictStrategy; | ||
import 'package:source_gen/source_gen.dart'; | ||
|
||
class ChangeMethodProcessorError { | ||
final MethodElement _methodElement; | ||
final String _methodType; | ||
|
||
ChangeMethodProcessorError(this._methodElement, this._methodType); | ||
|
||
InvalidGenerationSourceError get doesNotReturnVoidNorInt => | ||
InvalidGenerationSourceError( | ||
'$_methodType methods have to return a Future of either void or int.', | ||
element: _methodElement, | ||
); | ||
|
||
InvalidGenerationSourceError get doesNotReturnFuture => | ||
InvalidGenerationSourceError( | ||
'$_methodType methods have to return a Future.', | ||
element: _methodElement, | ||
); | ||
|
||
InvalidGenerationSourceError get shouldNotReturnList => | ||
InvalidGenerationSourceError( | ||
'$_methodType methods have to return a Future of either void or int but not a list.', | ||
element: _methodElement, | ||
); | ||
InvalidGenerationSourceError get doesNotReturnVoidNorIntNorListInt => | ||
InvalidGenerationSourceError( | ||
'$_methodType methods have to return a Future of either void, int or List<int>.', | ||
element: _methodElement, | ||
); | ||
InvalidGenerationSourceError get wrongOnConflictValue => | ||
InvalidGenerationSourceError( | ||
'Value of ${AnnotationField.onConflict} must be one of ${annotations.OnConflictStrategy.values.map((e) => e.toString()).join(',')}', | ||
element: _methodElement, | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
116 changes: 116 additions & 0 deletions
116
floor_generator/test/processor/deletion_method_processor_test.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
import 'package:floor_generator/processor/deletion_method_processor.dart'; | ||
import 'package:floor_generator/processor/error/change_method_processor_error.dart'; | ||
import 'package:source_gen/source_gen.dart'; | ||
import 'package:test/test.dart'; | ||
|
||
import '../test_utils.dart'; | ||
|
||
void main() { | ||
group('expected errors', () { | ||
test('when not accepting Parameter', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
Future<void> deletePerson(); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError(InvalidGenerationSourceError( | ||
'There is no parameter supplied for this method. Please add one.', | ||
element: deletionMethod, | ||
))); | ||
}); | ||
test('when accepting more than one Parameter', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
Future<void> deletePerson(Person p1, Person p2); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError(InvalidGenerationSourceError( | ||
'Only one parameter is allowed on this.', | ||
element: deletionMethod, | ||
))); | ||
}); | ||
test('when not accepting an Entity', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
Future<void> deletePerson(int p2); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError(InvalidGenerationSourceError( | ||
'You are trying to change an object which is not an entity.', | ||
element: deletionMethod, | ||
))); | ||
}); | ||
test('when not returning Future', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
void deletePerson(Person person); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError( | ||
ChangeMethodProcessorError(deletionMethod, 'Deletion') | ||
.doesNotReturnFuture)); | ||
}); | ||
test('when returning a List', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
Future<List<int>> deletePerson(Person person); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError( | ||
ChangeMethodProcessorError(deletionMethod, 'Deletion') | ||
.shouldNotReturnList)); | ||
}); | ||
test('when not returning int or void', () async { | ||
final deletionMethod = await ''' | ||
@delete | ||
Future<bool> deletePerson(Person person); | ||
''' | ||
.asDaoMethodElement(); | ||
final entities = await getPersonEntity(); | ||
|
||
final actual = | ||
() => DeletionMethodProcessor(deletionMethod, [entities]).process(); | ||
|
||
expect( | ||
actual, | ||
throwsInvalidGenerationSourceError( | ||
ChangeMethodProcessorError(deletionMethod, 'Deletion') | ||
.doesNotReturnVoidNorInt)); | ||
}); | ||
}); | ||
} |
Oops, something went wrong.