• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

asartalo / diligence / 8935810209

03 May 2024 07:50AM UTC coverage: 92.467% (-0.4%) from 92.842%
8935810209

push

github

web-flow
chore(merge): pull request #45 from main

chore(merge): merge latest from main

929 of 1018 new or added lines in 66 files covered. (91.26%)

1 existing line in 1 file now uncovered.

1964 of 2124 relevant lines covered (92.47%)

2.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.86
/lib/services/diligent/task_fields.dart
1
// Diligence - A Task Management App
2
//
3
// Copyright (C) 2024 Wayne Duran <asartalo@gmail.com>
4
//
5
// This program is free software: you can redistribute it and/or modify it under
6
// the terms of the GNU General Public License as published by the Free Software
7
// Foundation, either version 3 of the License, or (at your option) any later
8
// version.
9
//
10
// This program is distributed in the hope that it will be useful, but WITHOUT
11
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License along with
15
// this program. If not, see <https://www.gnu.org/licenses/>.
16

17
import '../../models/task.dart';
18

19
enum TaskField {
20
  id,
21
  uid,
22
  name,
23
  details,
24
  parentId,
25
  doneAt,
26
  position,
27
  expanded,
28
  createdAt,
29
  updatedAt,
30
  deadlineAt;
31

32
  @override
2✔
33
  String toString() => this.name;
2✔
34
}
35

36
typedef TaskMappingFunc = Object? Function(Task task);
37

38
final Map<TaskField, TaskMappingFunc> _taskFieldMap = {
6✔
NEW
39
  TaskField.id: (Task task) => task.id.toString(),
×
40
  TaskField.uid: (Task task) => task.uid,
4✔
41
  TaskField.name: (Task task) => task.name,
4✔
42
  TaskField.details: (Task task) => task.details,
4✔
43
  TaskField.parentId: (Task task) => task.parentId,
4✔
44
  TaskField.doneAt: (Task task) => task.doneAt?.millisecondsSinceEpoch,
6✔
NEW
45
  TaskField.position: (Task task) => null,
×
46
  TaskField.expanded: (Task task) => task.expanded ? 1 : 0,
4✔
47
  TaskField.createdAt: (Task task) => task.createdAt.millisecondsSinceEpoch,
6✔
48
  TaskField.updatedAt: (Task task) => task.updatedAt.millisecondsSinceEpoch,
6✔
49
  TaskField.deadlineAt: (Task task) => task.deadlineAt?.millisecondsSinceEpoch,
5✔
50
};
51

52
final allTaskFields = [..._taskFieldMap.keys];
10✔
53

54
final _unmodifiableFields = {TaskField.id, TaskField.uid};
8✔
55

56
final _fieldsAfterNew = {TaskField.id, TaskField.position};
8✔
57

58
final newTaskFields =
4✔
59
    allTaskFields.where((field) => !_fieldsAfterNew.contains(field)).toList();
12✔
60

61
final _modifiableFields = allTaskFields
6✔
62
    .where((field) => !_unmodifiableFields.contains(field))
8✔
63
    .toList();
2✔
64

65
final modifiableNonPositionFields =
4✔
66
    _modifiableFields.where((field) => field != TaskField.position).toList();
10✔
67

68
String _prefixedField(TaskField field, {String? prefix}) {
2✔
69
  return prefix is String ? '$prefix.$field' : field.toString();
6✔
70
}
71

72
typedef Pass<T> = String Function(T item);
73

74
extension CommaIt<T> on Iterable<T> {
75
  String mapComma(Pass<T> pass) => map(pass).commas();
6✔
76

77
  String commas() => join(', ');
4✔
78
}
79

80
String commaFields(List<TaskField> fields, {String? prefix}) {
2✔
81
  return fields.mapComma((field) => _prefixedField(field, prefix: prefix));
6✔
82
}
83

84
final commaAllTaskFields = commaFields(allTaskFields);
8✔
85
final commaAllTaskFieldsPrefixed = commaFields(allTaskFields, prefix: 'tasks');
8✔
86

87
Object? _propFromTaskField(TaskField field, Task task) {
2✔
88
  final mapping = _taskFieldMap[field];
4✔
89

90
  if (mapping == null) {
NEW
91
    throw Exception('Unknown task field: $field');
×
92
  }
93

94
  return mapping(task);
2✔
95
}
96

97
List<Object?> propsFromTaskFields(List<TaskField> fields, Task task) {
2✔
98
  return fields.map((field) => _propFromTaskField(field, task)).toList();
8✔
99
}
100

101
String fieldValuePlaceholders(List<TaskField> fields, {String? prefix}) {
2✔
102
  return fields
103
      .mapComma((field) => '${_prefixedField(field, prefix: prefix)} = ?');
8✔
104
}
105

106
String questionMarks(int count) {
2✔
107
  return List.generate(count, (_) => '?').commas();
6✔
108
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc