File size: 4,763 Bytes
cf86710
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { addToRange } from "./addToRange";

describe("addToRange", () => {
  test("add a date to an undefined range", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, undefined);
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date to an empty range", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, { from: undefined, to: undefined });
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date to an incomplete range with same start date and min = 0", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, { from: date, to: undefined });
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date to an incomplete range with same start date and min > 0", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, { from: date, to: undefined }, 1, 0, false);
    expect(range).toEqual(undefined);
  });

  test("add a date to an incomplete range with same start date and min > 0 and required", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, { from: date, to: undefined }, 1, 0, true);
    expect(range).toEqual({ from: date, to: undefined });
  });

  test("add a date to an incomplete range with earlier date", () => {
    const from = new Date(2022, 0, 1);
    const earlierDate = new Date(2021, 11, 31);
    const range = addToRange(earlierDate, { from: from, to: undefined });
    expect(range).toEqual({ from: earlierDate, to: from });
  });

  test("add a date to an incomplete range with later date", () => {
    const from = new Date(2022, 0, 1);
    const date = new Date(2022, 0, 2);
    const range = addToRange(date, { from: from, to: undefined });
    expect(range).toEqual({ from: from, to: date });
  });

  test("add a date to a complete range with same start and end date", () => {
    const date = new Date(2022, 0, 1);
    const from = date;
    const to = date;
    const range = addToRange(date, { from, to }, 0, 0, false);
    expect(range).toEqual(undefined);
  });

  test("add a date to a complete range with same start date", () => {
    const date = new Date(2022, 0, 1);
    const to = new Date(2022, 0, 2);
    const range = addToRange(date, { from: date, to: to });
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date to a complete range with same end date", () => {
    const date = new Date(2022, 0, 2);
    const from = new Date(2022, 0, 1);
    const range = addToRange(date, { from: from, to: date });
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date when inside the range", () => {
    const date = new Date(2022, 0, 1);
    const from = new Date(2021, 11, 31);
    const to = new Date(2022, 0, 2);
    const range = addToRange(date, { from, to });
    expect(range).toEqual({ from, to: date });
  });

  test("add an earlier date to a complete range", () => {
    const from = new Date(2022, 0, 1);
    const to = new Date(2022, 0, 2);
    const date = new Date(2021, 11, 31);
    const range = addToRange(date, { from, to });
    expect(range).toEqual({ from: date, to: to });
  });

  test("add a later date to a complete range", () => {
    const date = new Date(2022, 0, 2);
    const from = new Date(2021, 11, 31);
    const to = new Date(2022, 0, 1);
    const range = addToRange(date, { from, to });
    expect(range).toEqual({ from: from, to: date });
  });

  test("add a date with min > 0", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, undefined, 1, 0, false);
    expect(range).toEqual({ from: date, to: undefined });
  });

  test("add a date with max > 0", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, undefined, 0, 1, false);
    expect(range).toEqual({ from: date, to: date });
  });

  test("add a date with required set to true", () => {
    const date = new Date(2022, 0, 1);
    const range = addToRange(date, undefined, 0, 0, true);
    expect(range).toEqual({ from: date, to: date });
  });

  test("when exceeding max, set the start of the range", () => {
    const from = new Date(2022, 0, 1);
    const to = new Date(2022, 0, 2);
    const date = new Date(2022, 0, 4);
    const max = 2;
    const range = addToRange(date, { from, to }, 0, max, false);
    expect(range).toEqual({ from: date, to: undefined });
  });

  test("when below min, set the start of the range", () => {
    const from = new Date(2021, 11, 20);
    const to = new Date(2022, 0, 2);
    const date = new Date(2021, 11, 21);
    const min = 5;
    const range = addToRange(date, { from, to }, min, 0, false);
    expect(range).toEqual({ from: date, to: undefined });
  });
});