Skip to content
This repository was archived by the owner on Sep 14, 2024. It is now read-only.

Commit 3bd0a04

Browse files
committed
test Timer model
1 parent efffabb commit 3bd0a04

File tree

3 files changed

+51
-21
lines changed

3 files changed

+51
-21
lines changed

lib/src/models/timer.dart

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ class Timer {
5656
}
5757
@visibleForTesting
5858
@JsonKey(
59-
toJson: _recipeToJson,
60-
fromJson: _recipeFromJson,
59+
toJson: recipeToJson,
60+
fromJson: recipeFromJson,
6161
)
6262
final Recipe? recipe;
6363
final DateTime done;
@@ -114,10 +114,18 @@ class Timer {
114114
duration,
115115
recipeId,
116116
);
117+
// coverage:ignore-start
118+
@override
119+
String toString() =>
120+
'Timer(done: $done, id: $id, title: $title, body: $body, duration: $duration, recipeId: $recipeId)';
121+
// coverage:ignore-end
117122
}
118123

119-
Recipe _recipeFromJson(String data) =>
120-
standardSerializers.fromJson<Recipe>(Recipe.serializer, data)!;
121-
122-
String? _recipeToJson(Object? data) =>
123-
data != null ? standardSerializers.toJson(Recipe.serializer, data) : null;
124+
@visibleForTesting
125+
Recipe recipeFromJson(Map<String, dynamic>? data) =>
126+
standardSerializers.deserializeWith<Recipe>(Recipe.serializer, data)!;
127+
@visibleForTesting
128+
Map<String, dynamic>? recipeToJson(Object? data) => data != null
129+
? standardSerializers.serializeWith(Recipe.serializer, data)
130+
as Map<String, dynamic>?
131+
: null;

lib/src/models/timer.g.dart

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/timer_test.dart

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,66 @@
11
import 'dart:convert';
22

33
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:nc_cookbook_api/nc_cookbook_api.dart';
45
import 'package:nextcloud_cookbook_flutter/src/models/timer.dart';
56

7+
import 'helpers/translation_helpers.dart';
8+
69
void main() {
7-
const title = 'title';
8-
const body = 'body';
10+
const recipeName = 'title';
911
const duration = Duration(minutes: 5);
1012
final done = DateTime.now().add(duration);
1113
const recipeId = '12345678';
12-
const id = 0;
14+
const oldId = 0;
15+
16+
const title = recipeName;
17+
const body = 'body';
1318

14-
final timer = Timer.restoreOld(done, id, recipeId, title, duration, recipeId);
19+
final recipe = Recipe(
20+
(b) => b
21+
..name = recipeName
22+
..id = recipeId
23+
..dateCreated = DateTime.now().toUtc()
24+
..cookTime = duration,
25+
);
26+
final oldTimer =
27+
Timer.restoreOld(done, oldId, title, body, duration, recipeId);
28+
final newTimer = Timer(recipe);
1529

1630
final json =
17-
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"done":${done.millisecondsSinceEpoch},"id":$id,"recipeId":"$recipeId"}';
31+
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"done":${done.microsecondsSinceEpoch},"id":$oldId,"recipeId":"$recipeId"}';
1832
final orderedJson =
19-
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"id":$id,"done":${done.millisecondsSinceEpoch},"recipeId":"$recipeId"}';
33+
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"id":$oldId,"done":${done.microsecondsSinceEpoch},"recipeId":"$recipeId"}';
2034
final oldJson =
21-
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"done":${done.millisecondsSinceEpoch},"id":$id,"recipeId":$recipeId}';
35+
'{"title":"$title","body":"$body","duration":${duration.inMinutes},"done":${done.microsecondsSinceEpoch},"id":$oldId,"recipeId":$recipeId}';
36+
final newJson =
37+
'{"recipe":${jsonEncode(recipeToJson(recipe))},"done":"${newTimer.done.toIso8601String()}","id":null}';
2238

23-
final newJson = '{"recipe":null,"done":"${done.toIso8601String()}","id":$id}';
39+
setUpAll(setupL10n);
2440

2541
group(Timer, () {
2642
test('toJson', () {
27-
expect(jsonEncode(timer.toJson()), equals(newJson));
43+
expect(jsonEncode(newTimer.toJson()).trim(), equals(newJson));
2844
});
2945

3046
test('fromJson', () {
3147
expect(
3248
Timer.fromJson(jsonDecode(json) as Map<String, dynamic>),
33-
isA<Timer>(),
49+
equals(oldTimer),
3450
);
3551
expect(
3652
Timer.fromJson(jsonDecode(orderedJson) as Map<String, dynamic>),
37-
isA<Timer>(),
53+
equals(oldTimer),
3854
);
55+
3956
expect(
4057
Timer.fromJson(jsonDecode(oldJson) as Map<String, dynamic>),
41-
isA<Timer>(),
58+
equals(oldTimer),
59+
);
60+
61+
expect(
62+
Timer.fromJson(jsonDecode(newJson) as Map<String, dynamic>),
63+
equals(newTimer),
4264
);
4365
});
4466
});

0 commit comments

Comments
 (0)