Files
paperless-mobile/packages/paperless_api/test/saved_view_test.dart
2023-01-06 18:22:43 +01:00

275 lines
8.9 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_api/src/models/query_parameters/tags_query/include_tag_id_query.dart';
import 'package:paperless_api/src/models/query_parameters/text_query.dart';
void main() {
group('Validate parsing logic from [SavedView] to [DocumentFilter]:', () {
test('Values are correctly parsed if set.', () {
expect(
SavedView.fromJson({
"id": 1,
"name": "test_name",
"show_on_dashboard": false,
"show_in_sidebar": false,
"sort_field": SortField.created.name,
"sort_reverse": true,
"filter_rules": [
{
'rule_type': FilterRule.correspondentRule,
'value': "42",
},
{
'rule_type': FilterRule.documentTypeRule,
'value': "69",
},
{
'rule_type': FilterRule.includeTagsRule,
'value': "1",
},
{
'rule_type': FilterRule.includeTagsRule,
'value': "2",
},
{
'rule_type': FilterRule.excludeTagsRule,
'value': "3",
},
{
'rule_type': FilterRule.excludeTagsRule,
'value': "4",
},
{
'rule_type': FilterRule.extendedRule,
'value': "Never gonna give you up",
},
{
'rule_type': FilterRule.storagePathRule,
'value': "14",
},
{
'rule_type': FilterRule.createdBeforeRule,
'value': "2022-10-27",
},
{
'rule_type': FilterRule.createdAfterRule,
'value': "2022-09-27",
},
{
'rule_type': FilterRule.addedBeforeRule,
'value': "2022-09-26",
},
{
'rule_type': FilterRule.addedAfterRule,
'value': "2000-01-01",
}
]
}).toDocumentFilter(),
equals(
DocumentFilter.initial.copyWith(
correspondent: const IdQueryParameter.fromId(42),
documentType: const IdQueryParameter.fromId(69),
storagePath: const IdQueryParameter.fromId(14),
tags: const IdsTagsQuery(
[
IncludeTagIdQuery(1),
IncludeTagIdQuery(2),
ExcludeTagIdQuery(3),
ExcludeTagIdQuery(4),
],
),
created: AbsoluteDateRangeQuery(
before: DateTime.parse("2022-10-27"),
after: DateTime.parse("2022-09-27"),
),
added: AbsoluteDateRangeQuery(
before: DateTime.parse("2022-09-26"),
after: DateTime.parse("2000-01-01"),
),
sortField: SortField.created,
sortOrder: SortOrder.descending,
query: const TextQuery.extended("Never gonna give you up"),
),
),
);
});
test('Values are correctly parsed if unset.', () {
expect(
SavedView.fromJson({
"id": 1,
"name": "test_name",
"show_on_dashboard": false,
"show_in_sidebar": false,
"sort_field": SortField.created.name,
"sort_reverse": true,
"filter_rules": [],
}).toDocumentFilter(),
equals(DocumentFilter.initial),
);
});
test('Values are correctly parsed if not assigned.', () {
final actual = SavedView.fromJson({
"id": 1,
"name": "test_name",
"show_on_dashboard": false,
"show_in_sidebar": false,
"sort_field": SortField.created.name,
"sort_reverse": true,
"filter_rules": [
{
'rule_type': FilterRule.correspondentRule,
'value': null,
},
{
'rule_type': FilterRule.documentTypeRule,
'value': null,
},
{
'rule_type': FilterRule.hasAnyTag,
'value': false.toString(),
},
{
'rule_type': FilterRule.storagePathRule,
'value': null,
},
],
}).toDocumentFilter();
final expected = DocumentFilter.initial.copyWith(
correspondent: const IdQueryParameter.notAssigned(),
documentType: const IdQueryParameter.notAssigned(),
storagePath: const IdQueryParameter.notAssigned(),
tags: const OnlyNotAssignedTagsQuery(),
);
expect(
actual,
equals(expected),
);
});
});
group('Validate parsing logic from [DocumentFilter] to [SavedView]:', () {
test('Values are correctly parsed if set.', () {
expect(
SavedView.fromDocumentFilter(
DocumentFilter(
correspondent: const IdQueryParameter.fromId(1),
documentType: const IdQueryParameter.fromId(2),
storagePath: const IdQueryParameter.fromId(3),
tags: const IdsTagsQuery([
IncludeTagIdQuery(4),
IncludeTagIdQuery(5),
ExcludeTagIdQuery(6),
ExcludeTagIdQuery(7),
ExcludeTagIdQuery(8),
]),
sortField: SortField.added,
sortOrder: SortOrder.ascending,
created: AbsoluteDateRangeQuery(
before: DateTime.parse("2020-04-01"),
after: DateTime.parse("2020-02-01"),
),
added: AbsoluteDateRangeQuery(
before: DateTime.parse("2020-03-01"),
after: DateTime.parse("2020-01-01"),
),
query: const TextQuery.title("Never gonna let you down"),
),
name: "test_name",
showInSidebar: false,
showOnDashboard: false,
),
equals(
SavedView(
name: "test_name",
showOnDashboard: false,
showInSidebar: false,
sortField: SortField.added,
sortReverse: false,
filterRules: [
FilterRule(FilterRule.correspondentRule, "1"),
FilterRule(FilterRule.documentTypeRule, "2"),
FilterRule(FilterRule.storagePathRule, "3"),
FilterRule(FilterRule.includeTagsRule, "4"),
FilterRule(FilterRule.includeTagsRule, "5"),
FilterRule(FilterRule.excludeTagsRule, "6"),
FilterRule(FilterRule.excludeTagsRule, "7"),
FilterRule(FilterRule.excludeTagsRule, "8"),
FilterRule(FilterRule.addedAfterRule, "2020-01-01"),
FilterRule(FilterRule.addedBeforeRule, "2020-03-01"),
FilterRule(FilterRule.createdAfterRule, "2020-02-01"),
FilterRule(FilterRule.createdBeforeRule, "2020-04-01"),
FilterRule(FilterRule.titleRule, "Never gonna let you down"),
],
),
),
);
});
test('Values are correctly parsed if unset.', () {
expect(
SavedView.fromDocumentFilter(
const DocumentFilter(
correspondent: IdQueryParameter.unset(),
documentType: IdQueryParameter.unset(),
storagePath: IdQueryParameter.unset(),
tags: IdsTagsQuery(),
sortField: SortField.created,
sortOrder: SortOrder.descending,
added: UnsetDateRangeQuery(),
created: UnsetDateRangeQuery(),
query: TextQuery(),
),
name: "test_name",
showInSidebar: false,
showOnDashboard: false,
),
equals(
SavedView(
name: "test_name",
showOnDashboard: false,
showInSidebar: false,
sortField: SortField.created,
sortReverse: true,
filterRules: [],
),
),
);
});
test('Values are correctly parsed if not assigned.', () {
expect(
SavedView.fromDocumentFilter(
const DocumentFilter(
correspondent: IdQueryParameter.notAssigned(),
documentType: IdQueryParameter.notAssigned(),
storagePath: IdQueryParameter.notAssigned(),
tags: OnlyNotAssignedTagsQuery(),
sortField: SortField.created,
sortOrder: SortOrder.ascending,
),
name: "test_name",
showInSidebar: false,
showOnDashboard: false,
),
equals(
SavedView(
name: "test_name",
showOnDashboard: false,
showInSidebar: false,
sortField: SortField.created,
sortReverse: false,
filterRules: [
FilterRule(FilterRule.correspondentRule, null),
FilterRule(FilterRule.documentTypeRule, null),
FilterRule(FilterRule.storagePathRule, null),
FilterRule(FilterRule.hasAnyTag, false.toString()),
],
),
),
);
});
});
}