validates_overlap 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c44e9ddad60fc792566aa1102f2a3e85c28f3ba0
4
- data.tar.gz: fd2bcb9278232214532fd6f0c794c148b53caf94
3
+ metadata.gz: 9e861b52a30a5b27d67b83042a658a6cd923025a
4
+ data.tar.gz: 242c6bff486745218266e73c6e562995d6ed7e68
5
5
  SHA512:
6
- metadata.gz: 052f57ccaf9569cb66aa4c93ccfc870ff4978683cbd4208ddb924bac1919361a7db430ed1b2aca8cad10456e32edba1474b8d99054c14b2c0fa776c7cced43fc
7
- data.tar.gz: 1789ddb16c06fa4d5c7faf96a6c0115986817f6c553f130c323486b6718dd90579fb17fbbaff0b784fea0a3589f01868fb738ea34e822c0749557bcf1aaae696
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.5.2
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,3 @@
1
+ class Shift < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => {:start_shift => -1.day, :end_shift => 1.day}
3
+ end
@@ -0,0 +1,13 @@
1
+ class CreateShifts < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :shifts do |t|
4
+ t.date :starts_at
5
+ t.date :ends_at
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :shifts
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :shift do |u|
3
+ u.starts_at '2011-01-05'.to_date
4
+ u.ends_at '2011-01-08'.to_date
5
+ end
6
+ end
@@ -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.5.2
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.0.14
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