service map tests

This commit is contained in:
Tobe O 2018-10-22 12:29:09 -04:00
parent 82b32318e8
commit 86152f7a04
3 changed files with 84 additions and 1 deletions

View file

@ -1,3 +1,6 @@
# 2.0.0-alpha.9
* Add `Service.map`.
# 2.0.0-alpha.8 # 2.0.0-alpha.8
* No longer export HTTP-specific code from `angel_framework.dart`. * No longer export HTTP-specific code from `angel_framework.dart`.
An import of `import 'package:angel_framework/http.dart';` will be necessary in most cases now. An import of `import 'package:angel_framework/http.dart';` will be necessary in most cases now.

View file

@ -0,0 +1,80 @@
import 'package:angel_framework/angel_framework.dart';
import 'package:test/test.dart';
void main() {
MapService inner;
Service<String, Todo> mapped;
setUp(() {
inner = new MapService();
mapped = inner.map<Todo>(Todo.fromMap, Todo.toMap);
});
test('create', () async {
var result = await mapped.create(
new Todo(text: 'hello', complete: false),
);
print(result);
expect(
result,
new Todo(text: 'hello', complete: false),
);
});
group('after create', () {
Todo result;
String id;
setUp(() async {
result = await mapped.create(new Todo(text: 'hello', complete: false));
id = result.id;
});
test('index', () async {
expect(await mapped.index(), [result]);
});
test('modify', () async {
var newTodo = new Todo(text: 'yes', complete: true);
expect(await mapped.update(id, newTodo), newTodo);
});
test('update', () async {
var newTodo = new Todo(id: 'hmmm', text: 'yes', complete: true);
expect(await mapped.update(id, newTodo), newTodo);
});
test('read', () async {
expect(await mapped.read(id), result);
});
test('remove', () async {
expect(await mapped.remove(id), result);
});
});
}
class Todo {
final String id, text;
final bool complete;
Todo({this.id, this.text, this.complete});
static Todo fromMap(Map<String, dynamic> json) {
return new Todo(
id: json['id'] as String,
text: json['text'] as String,
complete: json['complete'] as bool);
}
static Map<String, dynamic> toMap(Todo model) {
return {'id': model.id, 'text': model.text, 'complete': model.complete};
}
@override
bool operator ==(other) =>
other is Todo && other.text == text && other.complete == complete;
@override
String toString() => '$id:$text($complete)';
}