You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
5.9 KiB
184 lines
5.9 KiB
import 'package:nextcloud/core.dart' as core; |
|
import 'package:nextcloud/nextcloud.dart'; |
|
import 'package:nextcloud/notes.dart' as notes; |
|
import 'package:test/test.dart'; |
|
|
|
import 'helper.dart'; |
|
|
|
void main() { |
|
group( |
|
'notes', |
|
() { |
|
late DockerImage image; |
|
setUpAll(() async => image = await getDockerImage()); |
|
|
|
late DockerContainer container; |
|
late TestNextcloudClient client; |
|
setUp(() async { |
|
container = await getDockerContainer(image); |
|
client = await getTestClient(container); |
|
}); |
|
tearDown(() => container.destroy()); |
|
|
|
test('Is supported', () async { |
|
final response = await client.core.ocs.getCapabilities(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
final result = client.notes.isSupported(response.body.ocs.data); |
|
expect(result.isSupported, isTrue); |
|
}); |
|
|
|
test('Create note favorite', () async { |
|
final response = await client.notes.createNote( |
|
title: 'a', |
|
content: 'b', |
|
category: 'c', |
|
favorite: 1, |
|
); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.id, isPositive); |
|
expect(response.body.title, 'a'); |
|
expect(response.body.content, 'b'); |
|
expect(response.body.category, 'c'); |
|
expect(response.body.favorite, true); |
|
expect(response.body.readonly, false); |
|
expect(response.body.etag, isNotNull); |
|
expect(response.body.modified, isNotNull); |
|
}); |
|
|
|
test('Create note not favorite', () async { |
|
final response = await client.notes.createNote( |
|
title: 'a', |
|
content: 'b', |
|
category: 'c', |
|
); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.id, isPositive); |
|
expect(response.body.title, 'a'); |
|
expect(response.body.content, 'b'); |
|
expect(response.body.category, 'c'); |
|
expect(response.body.favorite, false); |
|
expect(response.body.readonly, false); |
|
expect(response.body.etag, isNotNull); |
|
expect(response.body.modified, isNotNull); |
|
}); |
|
|
|
test('Get notes', () async { |
|
await client.notes.createNote(title: 'a'); |
|
await client.notes.createNote(title: 'b'); |
|
|
|
final response = await client.notes.getNotes(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body, hasLength(2)); |
|
expect(response.body[0].title, 'a'); |
|
expect(response.body[1].title, 'b'); |
|
}); |
|
|
|
test('Get note', () async { |
|
final response = await client.notes.getNote( |
|
id: (await client.notes.createNote(title: 'a')).body.id, |
|
); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.title, 'a'); |
|
}); |
|
|
|
test('Update note', () async { |
|
final id = (await client.notes.createNote(title: 'a')).body.id; |
|
await client.notes.updateNote( |
|
id: id, |
|
title: 'b', |
|
); |
|
|
|
final response = await client.notes.getNote(id: id); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.title, 'b'); |
|
}); |
|
|
|
test('Update note fail changed on server', () async { |
|
final response = await client.notes.createNote(title: 'a'); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
await client.notes.updateNote( |
|
id: response.body.id, |
|
title: 'b', |
|
ifMatch: '"${response.body.etag}"', |
|
); |
|
expect( |
|
() => client.notes.updateNote( |
|
id: response.body.id, |
|
title: 'c', |
|
ifMatch: '"${response.body.etag}"', |
|
), |
|
throwsA(predicate((final e) => (e! as DynamiteApiException).statusCode == 412)), |
|
); |
|
}); |
|
|
|
test('Delete note', () async { |
|
final id = (await client.notes.createNote(title: 'a')).body.id; |
|
|
|
var response = await client.notes.getNotes(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body, hasLength(1)); |
|
|
|
await client.notes.deleteNote(id: id); |
|
|
|
response = await client.notes.getNotes(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body, hasLength(0)); |
|
}); |
|
|
|
test('Get settings', () async { |
|
final response = await client.notes.getSettings(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.notesPath, 'Notes'); |
|
expect(response.body.fileSuffix, '.md'); |
|
expect(response.body.noteMode, notes.Settings_NoteMode.rich); |
|
}); |
|
|
|
test('Update settings', () async { |
|
var response = await client.notes.updateSettings( |
|
settings: notes.Settings( |
|
(final b) => b |
|
..notesPath = 'Test Notes' |
|
..fileSuffix = '.txt' |
|
..noteMode = notes.Settings_NoteMode.preview, |
|
), |
|
); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.notesPath, 'Test Notes'); |
|
expect(response.body.fileSuffix, '.txt'); |
|
expect(response.body.noteMode, notes.Settings_NoteMode.preview); |
|
|
|
response = await client.notes.getSettings(); |
|
expect(response.statusCode, 200); |
|
expect(() => response.headers, isA<void>()); |
|
|
|
expect(response.body.notesPath, 'Test Notes'); |
|
expect(response.body.fileSuffix, '.txt'); |
|
expect(response.body.noteMode, notes.Settings_NoteMode.preview); |
|
}); |
|
}, |
|
retry: retryCount, |
|
timeout: timeout, |
|
); |
|
}
|
|
|