Browse Source

Moved functions to manager and wrote tests

Arnaud Vergnet 4 years ago
parent
commit
7a3d5f16b1

+ 2
- 12
screens/Planning/PlanningScreen.js View File

@@ -59,7 +59,7 @@ export default class PlanningScreen extends React.Component<Props, State> {
59 59
     onAgendaRef: Function;
60 60
     onCalendarToggled: Function;
61 61
     onBackButtonPressAndroid: Function;
62
-    currentDate = this.getCurrentDate();
62
+    currentDate = PlanningEventManager.getCurrentDateString();
63 63
 
64 64
     constructor(props: any) {
65 65
         super(props);
@@ -107,23 +107,13 @@ export default class PlanningScreen extends React.Component<Props, State> {
107 107
         }
108 108
     };
109 109
 
110
-    getCurrentDate() {
111
-        let today = new Date();
112
-        return this.getFormattedDate(today);
113
-    }
114 110
 
115
-    getFormattedDate(date: Date) {
116
-        let dd = String(date.getDate()).padStart(2, '0');
117
-        let mm = String(date.getMonth() + 1).padStart(2, '0'); //January is 0!
118
-        let yyyy = date.getFullYear();
119
-        return yyyy + '-' + mm + '-' + dd;
120
-    }
121 111
 
122 112
     generateEmptyCalendar() {
123 113
         let end = new Date(new Date().setMonth(new Date().getMonth() + AGENDA_MONTH_SPAN + 1));
124 114
         let daysOfYear = {};
125 115
         for (let d = new Date(); d <= end; d.setDate(d.getDate() + 1)) {
126
-            daysOfYear[this.getFormattedDate(new Date(d))] = []
116
+            daysOfYear[PlanningEventManager.dateToString(new Date(d))] = []
127 117
         }
128 118
         return daysOfYear;
129 119
     }

+ 28
- 3
utils/PlanningEventManager.js View File

@@ -4,6 +4,17 @@ export default class PlanningEventManager {
4 4
     static dateRegExp = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
5 5
 
6 6
     /**
7
+     * Gets the current day string representation in the format
8
+     * YYYY-MM-DD
9
+     *
10
+     * @return {string} The string representation
11
+     */
12
+    static getCurrentDateString() {
13
+        return PlanningEventManager.dateToString(new Date());
14
+    }
15
+
16
+
17
+    /**
7 18
      * Checks if the given date is before the other.
8 19
      *
9 20
      * @param event1Date Event 1 date in format YYYY-MM-DD HH:MM:SS
@@ -27,7 +38,7 @@ export default class PlanningEventManager {
27 38
      * @return {string|undefined} Date in format YYYY:MM:DD or undefined if given string is invalid
28 39
      */
29 40
     static getDateOnlyString(dateString: ?string) {
30
-        if (PlanningEventManager.isDateStringFormatValid(dateString))
41
+        if (PlanningEventManager.isEventDateStringFormatValid(dateString))
31 42
             return dateString.split(" ")[0];
32 43
         else
33 44
             return undefined;
@@ -40,7 +51,7 @@ export default class PlanningEventManager {
40 51
      * @param dateString The string to check
41 52
      * @return {boolean}
42 53
      */
43
-    static isDateStringFormatValid(dateString: ?string) {
54
+    static isEventDateStringFormatValid(dateString: ?string) {
44 55
         return dateString !== undefined
45 56
             && dateString !== null
46 57
             && PlanningEventManager.dateRegExp.test(dateString);
@@ -55,7 +66,7 @@ export default class PlanningEventManager {
55 66
      */
56 67
     static stringToDate(dateString: ?string): Date | undefined {
57 68
         let date = new Date();
58
-        if (PlanningEventManager.isDateStringFormatValid(dateString)) {
69
+        if (PlanningEventManager.isEventDateStringFormatValid(dateString)) {
59 70
             let stringArray = dateString.split(' ');
60 71
             let dateArray = stringArray[0].split('-');
61 72
             let timeArray = stringArray[1].split(':');
@@ -77,6 +88,20 @@ export default class PlanningEventManager {
77 88
     }
78 89
 
79 90
     /**
91
+     * Converts a date object to a string in the format
92
+     * YYYY-MM-DD
93
+     *
94
+     * @param date The date object to convert
95
+     * @return {string} The converted string
96
+     */
97
+    static dateToString(date: Date) {
98
+        let dd = String(date.getDate()).padStart(2, '0');
99
+        let mm = String(date.getMonth() + 1).padStart(2, '0'); //January is 0!
100
+        let yyyy = date.getFullYear();
101
+        return yyyy + '-' + mm + '-' + dd;
102
+    }
103
+
104
+    /**
80 105
      * Returns a padded string for the given number if it is lower than 10
81 106
      *
82 107
      * @param i The string to be converted

+ 23
- 13
utils/__test__/PlanningEventManager.test.js View File

@@ -27,20 +27,20 @@ test('toPaddedString', () => {
27 27
     expect(PlanningEventManager.toPaddedString(100)).toBe("100");
28 28
 });
29 29
 
30
-test('isDateStringFormatValid', () => {
31
-    expect(PlanningEventManager.isDateStringFormatValid("2020-03-21 09:00:00")).toBeTrue();
32
-    expect(PlanningEventManager.isDateStringFormatValid("3214-64-12 01:16:65")).toBeTrue();
30
+test('isEventDateStringFormatValid', () => {
31
+    expect(PlanningEventManager.isEventDateStringFormatValid("2020-03-21 09:00:00")).toBeTrue();
32
+    expect(PlanningEventManager.isEventDateStringFormatValid("3214-64-12 01:16:65")).toBeTrue();
33 33
 
34
-    expect(PlanningEventManager.isDateStringFormatValid("3214-64-12 1:16:65")).toBeFalse();
35
-    expect(PlanningEventManager.isDateStringFormatValid("3214-f4-12 01:16:65")).toBeFalse();
36
-    expect(PlanningEventManager.isDateStringFormatValid("sqdd 09:00:00")).toBeFalse();
37
-    expect(PlanningEventManager.isDateStringFormatValid("2020-03-21")).toBeFalse();
38
-    expect(PlanningEventManager.isDateStringFormatValid("2020-03-21 truc")).toBeFalse();
39
-    expect(PlanningEventManager.isDateStringFormatValid("3214-64-12 1:16:65")).toBeFalse();
40
-    expect(PlanningEventManager.isDateStringFormatValid("garbage")).toBeFalse();
41
-    expect(PlanningEventManager.isDateStringFormatValid("")).toBeFalse();
42
-    expect(PlanningEventManager.isDateStringFormatValid(undefined)).toBeFalse();
43
-    expect(PlanningEventManager.isDateStringFormatValid(null)).toBeFalse();
34
+    expect(PlanningEventManager.isEventDateStringFormatValid("3214-64-12 1:16:65")).toBeFalse();
35
+    expect(PlanningEventManager.isEventDateStringFormatValid("3214-f4-12 01:16:65")).toBeFalse();
36
+    expect(PlanningEventManager.isEventDateStringFormatValid("sqdd 09:00:00")).toBeFalse();
37
+    expect(PlanningEventManager.isEventDateStringFormatValid("2020-03-21")).toBeFalse();
38
+    expect(PlanningEventManager.isEventDateStringFormatValid("2020-03-21 truc")).toBeFalse();
39
+    expect(PlanningEventManager.isEventDateStringFormatValid("3214-64-12 1:16:65")).toBeFalse();
40
+    expect(PlanningEventManager.isEventDateStringFormatValid("garbage")).toBeFalse();
41
+    expect(PlanningEventManager.isEventDateStringFormatValid("")).toBeFalse();
42
+    expect(PlanningEventManager.isEventDateStringFormatValid(undefined)).toBeFalse();
43
+    expect(PlanningEventManager.isEventDateStringFormatValid(null)).toBeFalse();
44 44
 });
45 45
 
46 46
 test('stringToDate', () => {
@@ -124,3 +124,13 @@ test('isEventBefore', () => {
124 124
         undefined, undefined)).toBeFalse();
125 125
 });
126 126
 
127
+test('dateToString', () => {
128
+    let testDate = new Date();
129
+    testDate.setFullYear(2020, 2, 21);
130
+    expect(PlanningEventManager.dateToString(testDate)).toBe("2020-03-21");
131
+    testDate.setFullYear(2021, 0, 12);
132
+    expect(PlanningEventManager.dateToString(testDate)).toBe("2021-01-12");
133
+    testDate.setFullYear(2022, 11, 31);
134
+    expect(PlanningEventManager.dateToString(testDate)).toBe("2022-12-31");
135
+});
136
+

Loading…
Cancel
Save