validates_overlap 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/VERSION +1 -1
- data/lib/validates_overlap/overlap_validator.rb +2 -0
- data/spec/dummy/app/models/shift.rb +3 -0
- data/spec/dummy/db/migrate/20151203153132_create_shifts.rb +13 -0
- data/spec/dummy/spec/factories/shift.rb +6 -0
- data/spec/dummy/spec/models/shift_spec.rb +43 -0
- metadata +24 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e861b52a30a5b27d67b83042a658a6cd923025a
|
4
|
+
data.tar.gz: 242c6bff486745218266e73c6e562995d6ed7e68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f60ffe6700e1e3100931adb078e05d9c34a0344a4eb7221035e894cbbc18d36424fb8c09dbb40b1cd70f63a4506025c4a09ded49b7946e278633b4e7f36c242
|
7
|
+
data.tar.gz: 87f79459a1ef597b566a7dcccf0d16af964ba4c7229e8cea3bff813e2c9ef4580fba0f99d3b925b09a31176e867d75db63f66dfd46ae462637fa749b5bc41e4d
|
data/README.md
CHANGED
@@ -38,6 +38,12 @@ validates :starts_at, :ends_at, :overlap => {:exclude_edges => "starts_at"}
|
|
38
38
|
validates :starts_at, :ends_at, :overlap => {:exclude_edges => ["starts_at", "ends_at"]}
|
39
39
|
```
|
40
40
|
|
41
|
+
#### shift edges
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
validates :starts_at, :ends_at, :overlap => {:start_shift => -1.day, :end_shift => 1.day}
|
45
|
+
```
|
46
|
+
|
41
47
|
#### define custom validation key and message
|
42
48
|
|
43
49
|
```ruby
|
@@ -83,4 +89,4 @@ but this code is not longer working. Currently please change your code to
|
|
83
89
|
```ruby
|
84
90
|
{:overlap => {:query_options => {:active => nil}}}
|
85
91
|
```
|
86
|
-
Thanks @supertinou for discovering and fix of this bug.
|
92
|
+
Thanks @supertinou for discovering and fix of this bug.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
@@ -111,6 +111,8 @@ class OverlapValidator < ActiveModel::EachValidator
|
|
111
111
|
# Return hash of values for overlap sql condition
|
112
112
|
def generate_overlap_sql_values(record)
|
113
113
|
starts_at_value, ends_at_value = resolve_values_from_attributes(record)
|
114
|
+
starts_at_value += options.fetch(:start_shift) { 0 } if starts_at_value && options
|
115
|
+
ends_at_value += options.fetch(:end_shift) { 0 } if ends_at_value && options
|
114
116
|
self.sql_values = {:starts_at_value => starts_at_value || BEGIN_OF_UNIX_TIME, :ends_at_value => ends_at_value || END_OF_UNIX_TIME}
|
115
117
|
end
|
116
118
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative '../../../spec_helper'
|
2
|
+
require_relative '../factories/shift'
|
3
|
+
|
4
|
+
describe Meeting do
|
5
|
+
|
6
|
+
context "Validation" do
|
7
|
+
before(:all) do
|
8
|
+
Shift.delete_all
|
9
|
+
end
|
10
|
+
|
11
|
+
it "create meeting" do
|
12
|
+
lambda {
|
13
|
+
FactoryGirl.create(:shift)
|
14
|
+
}.should change(Shift, :count).by(1)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "is not valid if exists shift within wider range" do
|
18
|
+
shift = FactoryGirl.build(:shift, :starts_at => "2011-01-09".to_date, :ends_at => "2011-01-11".to_date)
|
19
|
+
shift.should_not be_valid
|
20
|
+
shift.errors[:starts_at].should_not be_empty
|
21
|
+
shift.errors[:ends_at].should be_empty
|
22
|
+
|
23
|
+
shift = FactoryGirl.build(:shift, :starts_at => "2011-01-01".to_date, :ends_at => "2011-01-04".to_date)
|
24
|
+
shift.should_not be_valid
|
25
|
+
shift.errors[:starts_at].should_not be_empty
|
26
|
+
shift.errors[:ends_at].should be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it " validate object which has not got overlap" do
|
30
|
+
shift = FactoryGirl.build(:shift, :starts_at => "2011-01-10".to_date, :ends_at => "2011-01-11".to_date)
|
31
|
+
shift.should be_valid
|
32
|
+
shift.errors[:starts_at].should be_empty
|
33
|
+
shift.errors[:ends_at].should be_empty
|
34
|
+
|
35
|
+
shift = FactoryGirl.build(:shift, :starts_at => "2011-01-01".to_date, :ends_at => "2011-01-02".to_date)
|
36
|
+
shift.should be_valid
|
37
|
+
shift.errors[:starts_at].should be_empty
|
38
|
+
shift.errors[:ends_at].should be_empty
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_overlap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Bortlik
|
@@ -14,84 +14,84 @@ dependencies:
|
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sqlite3
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.12'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.12'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: factory_girl_rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '4.2'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '4.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.2'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: It can be useful when you you are developing some app where you will
|
@@ -102,8 +102,8 @@ extensions: []
|
|
102
102
|
extra_rdoc_files:
|
103
103
|
- README.md
|
104
104
|
files:
|
105
|
-
- .gitignore
|
106
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".travis.yml"
|
107
107
|
- Gemfile
|
108
108
|
- Gemfile.rails30
|
109
109
|
- Gemfile.rails32
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- spec/dummy/app/models/meeting.rb
|
127
127
|
- spec/dummy/app/models/position.rb
|
128
128
|
- spec/dummy/app/models/secure_meeting.rb
|
129
|
+
- spec/dummy/app/models/shift.rb
|
129
130
|
- spec/dummy/app/models/start_end_overlap_meeting.rb
|
130
131
|
- spec/dummy/app/models/start_overlap_meeting.rb
|
131
132
|
- spec/dummy/app/models/time_slot.rb
|
@@ -156,6 +157,7 @@ files:
|
|
156
157
|
- spec/dummy/db/migrate/20121207162212_create_time_slot.rb
|
157
158
|
- spec/dummy/db/migrate/20130826155107_create_active_meetings.rb
|
158
159
|
- spec/dummy/db/migrate/20150707155107_create_secure_meetings.rb
|
160
|
+
- spec/dummy/db/migrate/20151203153132_create_shifts.rb
|
159
161
|
- spec/dummy/db/schema.rb
|
160
162
|
- spec/dummy/public/404.html
|
161
163
|
- spec/dummy/public/422.html
|
@@ -174,6 +176,7 @@ files:
|
|
174
176
|
- spec/dummy/spec/factories/meeting.rb
|
175
177
|
- spec/dummy/spec/factories/position.rb
|
176
178
|
- spec/dummy/spec/factories/secure_meeting.rb
|
179
|
+
- spec/dummy/spec/factories/shift.rb
|
177
180
|
- spec/dummy/spec/factories/start_end_overlap_meeting.rb
|
178
181
|
- spec/dummy/spec/factories/start_overlap_meeting.rb
|
179
182
|
- spec/dummy/spec/factories/time_slot.rb
|
@@ -184,6 +187,7 @@ files:
|
|
184
187
|
- spec/dummy/spec/models/meeting_spec.rb
|
185
188
|
- spec/dummy/spec/models/position_spec.rb
|
186
189
|
- spec/dummy/spec/models/secure_meeting_spec.rb
|
190
|
+
- spec/dummy/spec/models/shift_spec.rb
|
187
191
|
- spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
|
188
192
|
- spec/dummy/spec/models/start_overlap_meeting_spec.rb
|
189
193
|
- spec/dummy/spec/models/time_slot_spec.rb
|
@@ -202,17 +206,17 @@ require_paths:
|
|
202
206
|
- lib
|
203
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
204
208
|
requirements:
|
205
|
-
- -
|
209
|
+
- - ">="
|
206
210
|
- !ruby/object:Gem::Version
|
207
211
|
version: '0'
|
208
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
213
|
requirements:
|
210
|
-
- -
|
214
|
+
- - ">="
|
211
215
|
- !ruby/object:Gem::Version
|
212
216
|
version: '0'
|
213
217
|
requirements: []
|
214
218
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.4.5
|
216
220
|
signing_key:
|
217
221
|
specification_version: 4
|
218
222
|
summary: This gem helps validate records with time overlap.
|
@@ -222,6 +226,7 @@ test_files:
|
|
222
226
|
- spec/dummy/spec/factories/meeting.rb
|
223
227
|
- spec/dummy/spec/factories/position.rb
|
224
228
|
- spec/dummy/spec/factories/secure_meeting.rb
|
229
|
+
- spec/dummy/spec/factories/shift.rb
|
225
230
|
- spec/dummy/spec/factories/start_end_overlap_meeting.rb
|
226
231
|
- spec/dummy/spec/factories/start_overlap_meeting.rb
|
227
232
|
- spec/dummy/spec/factories/time_slot.rb
|
@@ -232,6 +237,7 @@ test_files:
|
|
232
237
|
- spec/dummy/spec/models/meeting_spec.rb
|
233
238
|
- spec/dummy/spec/models/position_spec.rb
|
234
239
|
- spec/dummy/spec/models/secure_meeting_spec.rb
|
240
|
+
- spec/dummy/spec/models/shift_spec.rb
|
235
241
|
- spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
|
236
242
|
- spec/dummy/spec/models/start_overlap_meeting_spec.rb
|
237
243
|
- spec/dummy/spec/models/time_slot_spec.rb
|