From 5af3e4cac7f191201e19ef4c96c77d23c2d0b5bd Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Sun, 16 Sep 2018 22:13:50 +0200 Subject: [PATCH] Add mocked services --- lib/service/mocked_services.dart | 143 +++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 lib/service/mocked_services.dart diff --git a/lib/service/mocked_services.dart b/lib/service/mocked_services.dart new file mode 100644 index 0000000..c0cab91 --- /dev/null +++ b/lib/service/mocked_services.dart @@ -0,0 +1,143 @@ +import 'dart:async'; + +import 'package:fluttering_vikunja/models/namespace.dart'; +import 'package:fluttering_vikunja/models/task.dart'; +import 'package:fluttering_vikunja/models/user.dart'; +import 'package:fluttering_vikunja/service/services.dart'; + +// Data for mocked services +var _users = {1: User(1, 'test@testuser.org', 'test1')}; + +var _namespaces = { + 1: Namespace( + id: 1, + name: 'Test 1', + created: DateTime.now(), + updated: DateTime.now(), + description: 'A namespace for testing purposes', + owner: _users[1], + ) +}; + +var _nsLists = { + 1: [1] +}; + +var _lists = { + 1: TaskList( + id: 1, + title: 'List 1', + tasks: _tasks.values, + owner: _users[1], + description: 'A nice list', + created: DateTime.now(), + updated: DateTime.now()) +}; + +var _tasks = { + 1: Task( + id: 1, + text: 'Task 1', + owner: _users[1], + updated: DateTime.now(), + created: DateTime.now(), + description: 'A descriptive task', + done: false, + ) +}; + +// Mocked services + +class MockedNamespaceService implements NamespaceService { + @override + Future create(Namespace ns) { + _namespaces[ns.id] = ns; + return Future.value(ns); + } + + @override + Future delete(int namespaceId) { + _namespaces.remove(namespaceId); + return Future.value(); + } + + @override + Future get(int namespaceId) { + return Future.value(_namespaces[namespaceId]); + } + + @override + Future> getAll() { + return Future.value(_namespaces.values.toList()); + } + + @override + Future update(Namespace ns) { + if (!_namespaces.containsKey(ns.id)) + throw Exception('Namespace ${ns.id} does not exsists'); + return create(ns); + } +} + +class MockedListService implements ListService { + @override + Future create(TaskList tl) { + return Future.value(_lists[tl.id] = tl); + } + + @override + Future delete(int listId) { + _lists.remove(listId); + return Future.value(); + } + + @override + Future get(int listId) { + return Future.value(_lists[listId]); + } + + @override + Future> getAll() { + return Future.value(_lists.values.toList()); + } + + @override + Future> getByNamespace(int namespaceId) { + return Future.value( + _nsLists[namespaceId].map((listId) => _lists[listId]).toList()); + } + + @override + Future update(TaskList tl) { + if (!_lists.containsKey(tl)) + throw Exception('TaskList ${tl.id} does not exists'); + return create(tl); + } +} + +class MockedTaskService implements TaskService { + @override + Future delete(int taskId) { + _lists.forEach( + (_, list) => list.tasks.removeWhere((task) => task.id == taskId)); + _tasks.remove(taskId); + return Future.value(); + } + + @override + Future update(Task task) { + return Future.value(_tasks[task.id] = task); + } +} + +class MockedUserService implements UserService { + @override + Future login(String username, password) { + return Future.value(UserTokenPair(_users[1], 'abcdefg')); + } + + @override + Future get(int userId) { + return Future.value(_users[userId]); + } +}