acts_as_span 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,302 +1,304 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "a basic model using acts_as_span" do
4
- before(:all) do
5
- build_model :span_model do
6
- string :description
7
- date :start_date
8
- date :end_date
9
-
10
- acts_as_span
11
- end
12
- end
13
-
3
+ RSpec.describe "a basic model using acts_as_span" do
14
4
  context "named_scopes and current?, expired?, and future?" do
15
5
  # -2 -1 T +1 +2 C F E
16
6
  # A |---| E
17
- # B |-------| C
18
- # C |--------------| C
19
- # D | C
20
- # E |------| C
21
- # F |--| F
22
- # G |-> C
23
- # H |-> C
24
- # I |-> F
7
+ # B |-------| C
8
+ # C |--------------| C
9
+ # D | C
10
+ # E |------| C
11
+ # F |--| F
12
+ # G |-> C
13
+ # H |-> C
14
+ # I |-> F
25
15
  # J <-| E
26
- # K <-| C
27
- # L <-| C
28
- # M <-> C
16
+ # K <-| C
17
+ # L <-| C
18
+ # M <-> C
19
+ let(:span_a) {[ - 2.days, - 1.day ]}
20
+ let(:span_b) {[ - 2.days, 0.days ]}
21
+ let(:span_c) {[ - 2.days, 2.days ]}
22
+ let(:span_d) {[ 0.days, 0.days ]}
23
+ let(:span_e) {[ 0.days, 2.days ]}
24
+ let(:span_f) {[ 1.day, 2.days ]}
25
+ let(:span_g) {[ - 2.days, nil ]}
26
+ let(:span_h) {[ 0.days, nil ]}
27
+ let(:span_i) {[ 1.day, nil ]}
28
+ let(:span_j) {[ nil, - 1.day ]}
29
+ let(:span_k) {[ nil, 0.days ]}
30
+ let(:span_l) {[ nil, 2.days ]}
31
+ let(:span_m) {[ nil, nil ]}
32
+
33
+ let(:query_date) { Date.current }
34
+
35
+ let!(:span_model) do
36
+ current_start_date = start_date.nil? ? nil : query_date + start_date
37
+ current_end_date = end_date.nil? ? nil : query_date + end_date
38
+
39
+ SpanModel.create!(
40
+ start_date: current_start_date,
41
+ end_date: current_end_date)
42
+ end
43
+
29
44
  context "A) start_date < today & end_date < today" do
30
- before(:all) do
31
- @span_model = SpanModel.create!(:start_date => Date.today - 2.days, :end_date => Date.today - 1.day)
32
- end
33
-
45
+ let(:start_date) { span_a[0] }
46
+ let(:end_date) { span_a[1] }
47
+
34
48
  it "should NOT be included in #current" do
35
- SpanModel.current.should_not include(@span_model)
36
- @span_model.current?.should be_false
49
+ expect(SpanModel.current).not_to include(span_model)
50
+ expect(span_model.current?).to be_falsey
37
51
  end
38
-
52
+
39
53
  it "should NOT be included in #future" do
40
- SpanModel.future.should_not include(@span_model)
41
- @span_model.future?.should be_false
54
+ expect(SpanModel.future).not_to include(span_model)
55
+ expect(span_model.future?).to be_falsey
42
56
  end
43
-
57
+
44
58
  it "should be included in #expired" do
45
- SpanModel.expired.should include(@span_model)
46
- @span_model.expired?.should be_true
59
+ expect(SpanModel.expired).to include(span_model)
60
+ expect(span_model.expired?).to be_truthy
47
61
  end
48
62
  end
49
-
63
+
50
64
  context "B) start_date < today & end_date == today" do
51
- before(:all) do
52
- @span_model = SpanModel.create!(:start_date => Date.today - 2.day, :end_date => Date.today)
53
- end
54
-
65
+ let(:start_date) { span_b[0] }
66
+ let(:end_date) { span_b[1] }
67
+
55
68
  it "should be included in #current" do
56
- SpanModel.current.should include(@span_model)
57
- @span_model.current?.should be_true
69
+ expect(SpanModel.current).to include(span_model)
70
+ expect(span_model.current?).to be_truthy
58
71
  end
59
-
72
+
60
73
  it "should NOT be included in #future" do
61
- SpanModel.future.should_not include(@span_model)
62
- @span_model.future?.should be_false
74
+ expect(SpanModel.future).not_to include(span_model)
75
+ expect(span_model.future?).to be_falsey
63
76
  end
64
-
77
+
65
78
  it "should NOT be included in #expired" do
66
- SpanModel.expired.should_not include(@span_model)
67
- @span_model.expired?.should be_false
79
+ expect(SpanModel.expired).not_to include(span_model)
80
+ expect(span_model.expired?).to be_falsey
68
81
  end
69
82
  end
70
-
83
+
71
84
  context "C) start_date < today & end_date > today" do
72
- before(:all) do
73
- @span_model = SpanModel.create!(:start_date => Date.today - 2.day, :end_date => Date.today + 2.day)
74
- end
75
-
85
+ let(:start_date) { span_c[0] }
86
+ let(:end_date) { span_c[1] }
87
+
76
88
  it "should be included in #current" do
77
- SpanModel.current.should include(@span_model)
78
- @span_model.current?.should be_true
89
+ expect(SpanModel.current).to include(span_model)
90
+ expect(span_model.current?).to be_truthy
79
91
  end
80
-
92
+
81
93
  it "should NOT be included in #future" do
82
- SpanModel.future.should_not include(@span_model)
83
- @span_model.future?.should be_false
94
+ expect(SpanModel.future).not_to include(span_model)
95
+ expect(span_model.future?).to be_falsey
84
96
  end
85
-
97
+
86
98
  it "should NOT be included in #expired" do
87
- SpanModel.expired.should_not include(@span_model)
88
- @span_model.expired?.should be_false
99
+ expect(SpanModel.expired).not_to include(span_model)
100
+ expect(span_model.expired?).to be_falsey
89
101
  end
90
102
  end
91
-
103
+
92
104
  context "D) start_date == today & end_date == today" do
93
- before(:all) do
94
- @span_model = SpanModel.create!(:start_date => Date.today, :end_date => Date.today)
95
- end
96
-
105
+ let(:start_date) { span_d[0] }
106
+ let(:end_date) { span_d[1] }
107
+
97
108
  it "should be included in #current" do
98
- SpanModel.current.should include(@span_model)
99
- @span_model.current?.should be_true
109
+ expect(SpanModel.current).to include(span_model)
110
+ expect(span_model.current?).to be_truthy
100
111
  end
101
-
112
+
102
113
  it "should NOT be included in #future" do
103
- SpanModel.future.should_not include(@span_model)
104
- @span_model.future?.should be_false
114
+ expect(SpanModel.future).not_to include(span_model)
115
+ expect(span_model.future?).to be_falsey
105
116
  end
106
-
117
+
107
118
  it "should NOT be included in #expired" do
108
- SpanModel.expired.should_not include(@span_model)
109
- @span_model.expired?.should be_false
119
+ expect(SpanModel.expired).not_to include(span_model)
120
+ expect(span_model.expired?).to be_falsey
110
121
  end
111
122
  end
112
-
123
+
113
124
  context "E) start_date == today & end_date > today" do
114
- before(:all) do
115
- @span_model = SpanModel.create!(:start_date => Date.today, :end_date => Date.today + 2.day)
116
- end
117
-
125
+ let(:start_date) { span_e[0] }
126
+ let(:end_date) { span_e[1] }
127
+
118
128
  it "should be included in #current" do
119
- SpanModel.current.should include(@span_model)
120
- @span_model.current?.should be_true
129
+ expect(SpanModel.current).to include(span_model)
130
+ expect(span_model.current?).to be_truthy
121
131
  end
122
-
132
+
123
133
  it "should NOT be included in #future" do
124
- SpanModel.future.should_not include(@span_model)
125
- @span_model.future?.should be_false
134
+ expect(SpanModel.future).not_to include(span_model)
135
+ expect(span_model.future?).to be_falsey
126
136
  end
127
-
137
+
128
138
  it "should NOT be included in #expired" do
129
- SpanModel.expired.should_not include(@span_model)
130
- @span_model.expired?.should be_false
139
+ expect(SpanModel.expired).not_to include(span_model)
140
+ expect(span_model.expired?).to be_falsey
131
141
  end
132
142
  end
133
-
143
+
134
144
  context "F) start_date > today & end_date > today" do
135
- before(:all) do
136
- @span_model = SpanModel.create!(:start_date => Date.today + 1.day, :end_date => Date.today + 2.days)
137
- end
138
-
145
+ let(:start_date) { span_f[0] }
146
+ let(:end_date) { span_f[1] }
147
+
139
148
  it "should NOT be included in #current" do
140
- SpanModel.current.should_not include(@span_model)
141
- @span_model.current?.should be_false
149
+ expect(SpanModel.current).not_to include(span_model)
150
+ expect(span_model.current?).to be_falsey
142
151
  end
143
-
152
+
144
153
  it "should be included in #future" do
145
- SpanModel.future.should include(@span_model)
146
- @span_model.future?.should be_true
154
+ expect(SpanModel.future).to include(span_model)
155
+ expect(span_model.future?).to be_truthy
147
156
  end
148
-
157
+
149
158
  it "should NOT be included in #expired" do
150
- SpanModel.expired.should_not include(@span_model)
151
- @span_model.expired?.should be_false
159
+ expect(SpanModel.expired).not_to include(span_model)
160
+ expect(span_model.expired?).to be_falsey
152
161
  end
153
162
  end
154
-
163
+
155
164
  context "G) start_date < today & end_date == nil" do
156
- before(:all) do
157
- @span_model = SpanModel.create!(:start_date => Date.today - 2.day, :end_date => nil)
158
- end
159
-
165
+ let(:start_date) { span_g[0] }
166
+ let(:end_date) { span_g[1] }
167
+
160
168
  it "should be included in #current" do
161
- SpanModel.current.should include(@span_model)
162
- @span_model.current?.should be_true
169
+ expect(SpanModel.current).to include(span_model)
170
+ expect(span_model.current?).to be_truthy
163
171
  end
164
-
172
+
165
173
  it "should NOT be included in #future" do
166
- SpanModel.future.should_not include(@span_model)
167
- @span_model.future?.should be_false
174
+ expect(SpanModel.future).not_to include(span_model)
175
+ expect(span_model.future?).to be_falsey
168
176
  end
169
-
177
+
170
178
  it "should NOT be included in #expired" do
171
- SpanModel.expired.should_not include(@span_model)
172
- @span_model.expired?.should be_false
179
+ expect(SpanModel.expired).not_to include(span_model)
180
+ expect(span_model.expired?).to be_falsey
173
181
  end
174
182
  end
175
-
183
+
176
184
  context "H) start_date == today & end_date == nil" do
177
- before(:all) do
178
- @span_model = SpanModel.create!(:start_date => Date.today, :end_date => nil)
179
- end
180
-
185
+ let(:start_date) { span_h[0] }
186
+ let(:end_date) { span_h[1] }
187
+
181
188
  it "should be included in #current" do
182
- SpanModel.current.should include(@span_model)
183
- @span_model.current?.should be_true
189
+ expect(SpanModel.current).to include(span_model)
190
+ expect(span_model.current?).to be_truthy
184
191
  end
185
-
192
+
186
193
  it "should NOT be included in #future" do
187
- SpanModel.future.should_not include(@span_model)
188
- @span_model.future?.should be_false
194
+ expect(SpanModel.future).not_to include(span_model)
195
+ expect(span_model.future?).to be_falsey
189
196
  end
190
-
197
+
191
198
  it "should NOT be included in #expired" do
192
- SpanModel.expired.should_not include(@span_model)
193
- @span_model.expired?.should be_false
199
+ expect(SpanModel.expired).not_to include(span_model)
200
+ expect(span_model.expired?).to be_falsey
194
201
  end
195
202
  end
196
-
203
+
197
204
  context "I) start_date > today & end_date == nil" do
198
- before(:all) do
199
- @span_model = SpanModel.create!(:start_date => Date.today + 1.day, :end_date => nil)
200
- end
201
-
205
+ let(:start_date) { span_i[0] }
206
+ let(:end_date) { span_i[1] }
207
+
202
208
  it "should NOT be included in #current" do
203
- SpanModel.current.should_not include(@span_model)
204
- @span_model.current?.should be_false
209
+ expect(SpanModel.current).not_to include(span_model)
210
+ expect(span_model.current?).to be_falsey
205
211
  end
206
-
212
+
207
213
  it "should be included in #future" do
208
- SpanModel.future.should include(@span_model)
209
- @span_model.future?.should be_true
214
+ expect(SpanModel.future).to include(span_model)
215
+ expect(span_model.future?).to be_truthy
210
216
  end
211
-
217
+
212
218
  it "should NOT be included in #expired" do
213
- SpanModel.expired.should_not include(@span_model)
214
- @span_model.expired?.should be_false
219
+ expect(SpanModel.expired).not_to include(span_model)
220
+ expect(span_model.expired?).to be_falsey
215
221
  end
216
222
  end
217
-
223
+
218
224
  context "J) start_date == nil & end_date < today" do
219
- before(:all) do
220
- @span_model = SpanModel.create!(:start_date => nil, :end_date => Date.today - 1.day)
221
- end
222
-
225
+ let(:start_date) { span_j[0] }
226
+ let(:end_date) { span_j[1] }
227
+
223
228
  it "should NOT be included in #current" do
224
- SpanModel.current.should_not include(@span_model)
225
- @span_model.current?.should be_false
229
+ expect(SpanModel.current).not_to include(span_model)
230
+ expect(span_model.current?).to be_falsey
226
231
  end
227
-
232
+
228
233
  it "should NOT be included in #future" do
229
- SpanModel.future.should_not include(@span_model)
230
- @span_model.future?.should be_false
234
+ expect(SpanModel.future).not_to include(span_model)
235
+ expect(span_model.future?).to be_falsey
231
236
  end
232
-
237
+
233
238
  it "should be included in #expired" do
234
- SpanModel.expired.should include(@span_model)
235
- @span_model.expired?.should be_true
239
+ expect(SpanModel.expired).to include(span_model)
240
+ expect(span_model.expired?).to be_truthy
236
241
  end
237
242
  end
238
-
243
+
239
244
  context "K) start_date == nil & end_date == today" do
240
- before(:all) do
241
- @span_model = SpanModel.create!(:start_date => nil, :end_date => Date.today)
242
- end
243
-
245
+ let(:start_date) { span_k[0] }
246
+ let(:end_date) { span_k[1] }
247
+
244
248
  it "should be included in #current" do
245
- SpanModel.current.should include(@span_model)
246
- @span_model.current?.should be_true
249
+ expect(SpanModel.current).to include(span_model)
250
+ expect(span_model.current?).to be_truthy
247
251
  end
248
-
252
+
249
253
  it "should NOT be included in #future" do
250
- SpanModel.future.should_not include(@span_model)
251
- @span_model.future?.should be_false
254
+ expect(SpanModel.future).not_to include(span_model)
255
+ expect(span_model.future?).to be_falsey
252
256
  end
253
-
257
+
254
258
  it "should NOT be included in #expired" do
255
- SpanModel.expired.should_not include(@span_model)
256
- @span_model.expired?.should be_false
259
+ expect(SpanModel.expired).not_to include(span_model)
260
+ expect(span_model.expired?).to be_falsey
257
261
  end
258
262
  end
259
-
263
+
260
264
  context "L) start_date == nil & end_date > today" do
261
- before(:all) do
262
- @span_model = SpanModel.create!(:start_date => nil, :end_date => Date.today + 2.day)
263
- end
264
-
265
+ let(:start_date) { span_l[0] }
266
+ let(:end_date) { span_l[1] }
267
+
265
268
  it "should be included in #current" do
266
- SpanModel.current.should include(@span_model)
267
- @span_model.current?.should be_true
269
+ expect(SpanModel.current).to include(span_model)
270
+ expect(span_model.current?).to be_truthy
268
271
  end
269
-
272
+
270
273
  it "should NOT be included in #future" do
271
- SpanModel.future.should_not include(@span_model)
272
- @span_model.future?.should be_false
274
+ expect(SpanModel.future).not_to include(span_model)
275
+ expect(span_model.future?).to be_falsey
273
276
  end
274
-
277
+
275
278
  it "should NOT be included in #expired" do
276
- SpanModel.expired.should_not include(@span_model)
277
- @span_model.expired?.should be_false
279
+ expect(SpanModel.expired).not_to include(span_model)
280
+ expect(span_model.expired?).to be_falsey
278
281
  end
279
282
  end
280
-
283
+
281
284
  context "M) start_date == nil & end_date == nil" do
282
- before(:all) do
283
- @span_model = SpanModel.create!(:start_date => nil, :end_date => nil)
284
- end
285
-
285
+ let(:start_date) { span_m[0] }
286
+ let(:end_date) { span_m[1] }
287
+
286
288
  it "should be included in #current" do
287
- SpanModel.current.should include(@span_model)
288
- @span_model.current?.should be_true
289
+ expect(SpanModel.current).to include(span_model)
290
+ expect(span_model.current?).to be_truthy
289
291
  end
290
-
292
+
291
293
  it "should NOT be included in #future" do
292
- SpanModel.future.should_not include(@span_model)
293
- @span_model.future?.should be_false
294
+ expect(SpanModel.future).not_to include(span_model)
295
+ expect(span_model.future?).to be_falsey
294
296
  end
295
-
297
+
296
298
  it "should NOT be included in #expired" do
297
- SpanModel.expired.should_not include(@span_model)
298
- @span_model.expired?.should be_false
299
+ expect(SpanModel.expired).not_to include(span_model)
300
+ expect(span_model.expired?).to be_falsey
299
301
  end
300
302
  end
301
303
  end
302
- end
304
+ end