mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-06 17:15:50 -06:00
275 lines
8.9 KiB
Dart
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()),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
});
|
|
});
|
|
}
|