This repository has been archived on 2022-04-20. You can view files and clone it, but cannot push or open issues or pull requests.
app/lib/service/mocked_services.dart
konrad edbadd9913 Make it build again (#38)
Fix parsing of user model if email is not present

Use user avatar hash instead of calculating it from the email

Format

Replace GravatarImageProvider

Set min sdk version to 19

Change target api version to 28

Limit drone pipeline execution to master or pr

Remove drone debug

Use username instead of id

Format

"Fix" clone permissions

Drone debug

Fix drone permissions with different flutter build docker image

Switch CI build image

Bump Gradle sdk version

Fix formatting

Update packages for support for androidX

Update gitignore

AndroidX

Make GravatarImageProvider work again

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: #38
2020-01-12 12:59:28 +00:00

165 lines
3.7 KiB
Dart

import 'dart:async';
import 'package:vikunja_app/models/list.dart';
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';
// 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.toList(),
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<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) {
_nsLists[namespaceId].add(tl.id);
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(
_nsLists[namespaceId].map((listId) => _lists[listId]).toList());
}
@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);
}
}
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<Task> update(Task task) {
_lists.forEach((_, list) {
if (list.tasks.where((t) => t.id == task.id).length > 0) {
list.tasks.removeWhere((t) => t.id == task.id);
list.tasks.add(task);
}
});
return Future.value(_tasks[task.id] = task);
}
@override
Future<Task> add(int listId, Task task) {
var id = _tasks.keys.last + 1;
_tasks[id] = task;
_lists[listId].tasks.add(task);
return Future.value(task);
}
}
class MockedUserService implements UserService {
@override
Future<UserTokenPair> login(String username, password) {
return Future.value(UserTokenPair(_users[1], 'abcdefg'));
}
@override
Future<UserTokenPair> register(String username, email, password) {
return Future.value(UserTokenPair(_users[1], 'abcdefg'));
}
@override
Future<User> getCurrentUser() {
return Future.value(_users[1]);
}
}