1
0
mirror of https://github.com/go-vikunja/app synced 2024-06-02 18:49:47 +00:00
app-mirror-github/lib/service/mocked_services.dart

229 lines
5.2 KiB
Dart
Raw Normal View History

2018-09-16 20:13:50 +00:00
import 'dart:async';
2021-06-04 09:34:25 +00:00
import 'package:vikunja_app/api/response.dart';
2019-03-11 20:29:15 +00:00
import 'package:vikunja_app/models/list.dart';
2018-09-22 20:56:16 +00:00
import 'package:vikunja_app/models/namespace.dart';
import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/models/user.dart';
import 'package:vikunja_app/service/services.dart';
2018-09-16 20:13:50 +00:00
// Data for mocked services
2022-09-03 15:43:16 +00:00
var _users = {1: User(id: 1, username: 'test1')};
2018-09-16 20:13:50 +00:00
var _namespaces = {
1: Namespace(
id: 1,
title: 'Test 1',
2018-09-16 20:13:50 +00:00
created: DateTime.now(),
updated: DateTime.now(),
description: 'A namespace for testing purposes',
2022-09-03 15:43:16 +00:00
owner: _users[1]!,
2018-09-16 20:13:50 +00:00
)
};
var _nsLists = {
1: [1]
};
var _lists = {
1: TaskList(
id: 1,
title: 'List 1',
tasks: _tasks.values.toList(),
2022-09-03 15:43:16 +00:00
owner: _users[1]!,
2018-09-16 20:13:50 +00:00
description: 'A nice list',
created: DateTime.now(),
2022-08-27 21:57:42 +00:00
updated: DateTime.now(),
namespaceId: 1)
2018-09-16 20:13:50 +00:00
};
var _tasks = {
1: Task(
id: 1,
title: 'Task 1',
2022-09-03 15:43:16 +00:00
createdBy: _users[1]!,
2018-09-16 20:13:50 +00:00
updated: DateTime.now(),
created: DateTime.now(),
description: 'A descriptive task',
done: false,
2023-07-22 20:54:04 +00:00
projectId: 1,
2018-09-16 20:13:50 +00:00
)
};
// Mocked services
class MockedNamespaceService implements NamespaceService {
@override
Future<Namespace> create(Namespace ns) {
_namespaces[ns.id] = ns;
return Future.value(ns);
}
@override
Future delete(int namespaceId) {
_namespaces.remove(namespaceId);
return Future.value();
}
@override
Future<Namespace> get(int namespaceId) {
return Future.value(_namespaces[namespaceId]);
}
@override
Future<List<Namespace>> getAll() {
return Future.value(_namespaces.values.toList());
}
@override
Future<Namespace> 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<TaskList> create(namespaceId, TaskList tl) {
2022-08-27 21:04:43 +00:00
_nsLists[namespaceId]?.add(tl.id);
2018-09-16 20:13:50 +00:00
return Future.value(_lists[tl.id] = tl);
}
@override
Future delete(int listId) {
_lists.remove(listId);
return Future.value();
}
@override
Future<TaskList> get(int listId) {
return Future.value(_lists[listId]);
}
@override
Future<List<TaskList>> getAll() {
return Future.value(_lists.values.toList());
}
@override
Future<List<TaskList>> getByNamespace(int namespaceId) {
return Future.value(
2022-08-27 21:04:43 +00:00
_nsLists[namespaceId]!.map((listId) => _lists[listId]!).toList());
2018-09-16 20:13:50 +00:00
}
@override
Future<TaskList> update(TaskList tl) {
if (!_lists.containsKey(tl))
throw Exception('TaskList ${tl.id} does not exists');
return Future.value(_lists[tl.id] = tl);
2018-09-16 20:13:50 +00:00
}
@override
Future<String> getDisplayDoneTasks(int listId) {
// TODO: implement getDisplayDoneTasks
throw UnimplementedError();
}
@override
void setDisplayDoneTasks(int listId, String value) {
// TODO: implement setDisplayDoneTasks
}
@override
Future<String> getDefaultList() {
// TODO: implement getDefaultList
throw UnimplementedError();
}
@override
2022-08-27 21:04:43 +00:00
void setDefaultList(int? listId) {
// TODO: implement setDefaultList
}
2018-09-16 20:13:50 +00:00
}
class MockedTaskService implements TaskService {
@override
Future delete(int taskId) {
_lists.forEach(
2022-09-03 15:43:16 +00:00
(_, list) => list.tasks.removeWhere((task) => task.id == taskId));
2018-09-16 20:13:50 +00:00
_tasks.remove(taskId);
return Future.value();
}
@override
Future<Task> update(Task task) {
_lists.forEach((_, list) {
2022-09-03 15:43:16 +00:00
if (list.tasks.where((t) => t.id == task.id).length > 0) {
list.tasks.removeWhere((t) => t.id == task.id);
list.tasks.add(task);
}
});
2022-09-03 15:43:16 +00:00
return Future.value(_tasks[task.id] = task);
2018-09-16 20:13:50 +00:00
}
@override
Future<Task> add(int listId, Task task) {
var id = _tasks.keys.last + 1;
_tasks[id] = task;
2022-08-27 21:04:43 +00:00
_lists[listId]!.tasks.add(task);
return Future.value(task);
}
2021-06-04 09:34:25 +00:00
@override
int get maxPages => 1;
Future<Task> get(int taskId) {
// TODO: implement get
throw UnimplementedError();
}
2022-04-15 18:14:04 +00:00
@override
Future<List<Task>> getByOptions(TaskServiceOptions options) {
// TODO: implement getByOptions
throw UnimplementedError();
}
@override
Future<List<Task>> getAll() {
// TODO: implement getAll
throw UnimplementedError();
}
@override
Future<Response?> getAllByProject(int projectId, [Map<String, List<String>>? queryParameters]) {
// TODO: implement getAllByProject
return Future.value(new Response(_tasks.values.toList(), 200, {}));
}
2018-09-16 20:13:50 +00:00
}
class MockedUserService implements UserService {
@override
2022-08-27 21:04:43 +00:00
Future<UserTokenPair> login(String username, password, {bool rememberMe = false, String? totp}) {
return Future.value(UserTokenPair(_users[1]!, 'abcdefg'));
2018-09-16 20:13:50 +00:00
}
2018-10-08 14:26:01 +00:00
@override
Future<UserTokenPair> register(String username, email, password) {
2022-08-27 21:04:43 +00:00
return Future.value(UserTokenPair(_users[1]!, 'abcdefg'));
2018-10-08 14:26:01 +00:00
}
2018-09-16 20:13:50 +00:00
@override
2018-09-17 13:35:57 +00:00
Future<User> getCurrentUser() {
return Future.value(_users[1]);
2018-09-16 20:13:50 +00:00
}
2022-04-28 11:58:27 +00:00
2023-12-23 21:38:16 +00:00
@override
Future<UserSettings> setCurrentUserSettings(UserSettings userSettings) {
// TODO: implement setCurrentUserSettings
throw UnimplementedError();
}
@override
Future<String?> getToken() {
// TODO: implement getToken
throw UnimplementedError();
}
2022-04-28 11:58:27 +00:00
2018-09-16 20:13:50 +00:00
}