• 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

90.48
/lib/models/modified_task.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 'package:flutter/foundation.dart' show immutable;
18

19
import 'persisted_task.dart';
20
import 'task.dart';
21
import 'task_commons.dart';
22

23
bool sameTime(DateTime? a, DateTime? b) {
5✔
24
  if (a == null && b == null) return true;
25
  if (a == null || b == null) return false;
26

27
  return a.isAtSameMomentAs(b);
×
28
}
29

30
@immutable
31
class ModifiedTask with TaskCommons implements Task {
32
  final PersistedTask originalTask;
33
  final _modifiedFields = <String>{};
34

35
  @override
3✔
36
  int get id => originalTask.id;
6✔
37

38
  @override
39
  final int? parentId;
40

41
  @override
42
  final DateTime? doneAt;
43

44
  @override
4✔
45
  bool get done => doneAt != null;
4✔
46

47
  @override
48
  final String name;
49

50
  @override
51
  final String? details;
52

53
  @override
×
54
  String get uid => originalTask.uid;
×
55

56
  @override
57
  final bool expanded;
58

59
  @override
2✔
60
  DateTime get createdAt => originalTask.createdAt;
4✔
61

62
  @override
63
  final DateTime updatedAt;
64

65
  @override
66
  final DateTime? deadlineAt;
67

68
  ModifiedTask({
5✔
69
    this.parentId,
70
    this.doneAt,
71
    this.name = '',
72
    this.details,
73
    this.expanded = false,
74
    this.deadlineAt,
75
    required this.originalTask,
76
    required DateTime now,
77
  }) : updatedAt = now {
78
    _checkModifications(
5✔
79
      originalTask,
5✔
80
      parentId: parentId,
5✔
81
      doneAt: doneAt,
5✔
82
      name: name,
5✔
83
      details: details,
5✔
84
      expanded: expanded,
5✔
85
      deadlineAt: deadlineAt,
5✔
86
    );
87
  }
88

89
  @override
3✔
90
  ModifiedTask copyWith({
91
    int? id,
92
    int? parentId,
93
    bool? done,
94
    DateTime? doneAt,
95
    String? uid,
96
    String? name,
97
    String? details,
98
    bool? expanded,
99
    DateTime? createdAt,
100
    DateTime? updatedAt,
101
    DateTime? deadlineAt,
102
    required DateTime now,
103
  }) {
104
    return ModifiedTask(
3✔
105
      now: now,
106
      originalTask: originalTask,
3✔
107
      parentId: parentId ?? this.parentId,
3✔
108
      doneAt: normalizedDoneAt(now, done, doneAt),
3✔
109
      name: name ?? this.name,
3✔
110
      details: normalizedDetails(details),
3✔
111
      expanded: expanded ?? this.expanded,
3✔
112
      deadlineAt: deadlineAt ?? this.deadlineAt,
3✔
113
    );
114
  }
115

116
  void _checkModifications(
5✔
117
    Task original, {
118
    int? parentId,
119
    DateTime? doneAt,
120
    String? name,
121
    String? details,
122
    bool? expanded,
123
    DateTime? deadlineAt,
124
  }) {
125
    if (parentId != original.parentId) _modifiedFields.add('parentId');
12✔
126
    if (!sameTime(doneAt, original.doneAt)) _modifiedFields.add('doneAt');
18✔
127
    if (name != original.name) _modifiedFields.add('name');
20✔
128
    if (details != original.details) _modifiedFields.add('details');
16✔
129
    if (expanded != original.expanded) _modifiedFields.add('expanded');
14✔
130
    if (!sameTime(deadlineAt, original.deadlineAt)) {
10✔
NEW
131
      _modifiedFields.add('deadlineAt');
×
132
    }
133
  }
134

135
  Set<String> modifiedFields() {
3✔
136
    return _modifiedFields;
3✔
137
  }
138

139
  bool isModified(String field) {
3✔
140
    return modifiedFields().contains(field);
6✔
141
  }
142

143
  bool hasToggledDone() {
2✔
144
    return isModified('doneAt');
2✔
145
  }
146
}
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

© 2025 Coveralls, Inc