validates_overlap 0.5.1 → 0.5.2
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/VERSION +1 -1
- data/lib/validates_overlap/locale/pt-BR.yml +4 -0
- data/lib/validates_overlap/overlap_validator.rb +8 -3
- data/spec/dummy/app/models/secure_meeting.rb +3 -0
- data/spec/dummy/config/environments/development.rb +1 -1
- data/spec/dummy/db/migrate/20150707155107_create_secure_meetings.rb +14 -0
- data/spec/dummy/db/schema.rb +36 -29
- data/spec/dummy/spec/factories/secure_meeting.rb +6 -0
- data/spec/dummy/spec/models/secure_meeting_spec.rb +21 -0
- data/validates_overlap.gemspec +1 -1
- metadata +25 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c44e9ddad60fc792566aa1102f2a3e85c28f3ba0
|
4
|
+
data.tar.gz: fd2bcb9278232214532fd6f0c794c148b53caf94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 052f57ccaf9569cb66aa4c93ccfc870ff4978683cbd4208ddb924bac1919361a7db430ed1b2aca8cad10456e32edba1474b8d99054c14b2c0fa776c7cced43fc
|
7
|
+
data.tar.gz: 1789ddb16c06fa4d5c7faf96a6c0115986817f6c553f130c323486b6718dd90579fb17fbbaff0b784fea0a3589f01868fb738ea34e822c0749557bcf1aaae696
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
@@ -90,19 +90,24 @@ class OverlapValidator < ActiveModel::EachValidator
|
|
90
90
|
record.class.primary_key
|
91
91
|
end
|
92
92
|
|
93
|
+
def primary_key_value(primary_key_name, record)
|
94
|
+
record.send(primary_key_name)
|
95
|
+
end
|
96
|
+
|
93
97
|
# Generate sql condition for time range cross
|
94
98
|
def generate_overlap_sql_conditions(record)
|
95
99
|
starts_at_attr, ends_at_attr = attributes_to_sql(record)
|
96
100
|
main_condition = condition_string(starts_at_attr, ends_at_attr)
|
97
101
|
primary_key_name = primary_key(record)
|
102
|
+
key = primary_key_value(primary_key_name, record)
|
98
103
|
if record.new_record?
|
99
104
|
self.sql_conditions = main_condition
|
100
105
|
else
|
101
|
-
self.sql_conditions = "#{main_condition} AND #{record_table_name(record)}.#{
|
106
|
+
self.sql_conditions = "#{main_condition} AND #{record_table_name(record)}.#{primary_key(record)} !="
|
107
|
+
self.sql_conditions += key.is_a?(String) ? "'#{key}'" : key.to_s
|
102
108
|
end
|
103
109
|
end
|
104
110
|
|
105
|
-
|
106
111
|
# Return hash of values for overlap sql condition
|
107
112
|
def generate_overlap_sql_values(record)
|
108
113
|
starts_at_value, ends_at_value = resolve_values_from_attributes(record)
|
@@ -160,7 +165,7 @@ class OverlapValidator < ActiveModel::EachValidator
|
|
160
165
|
if value
|
161
166
|
value.is_a?(Proc) ? value.call(record) : value
|
162
167
|
else
|
163
|
-
record.
|
168
|
+
record.read_attribute(attr_name)
|
164
169
|
end
|
165
170
|
end
|
166
171
|
|
@@ -11,7 +11,7 @@ Dummy::Application.configure do
|
|
11
11
|
|
12
12
|
# Show full error reports and disable caching
|
13
13
|
config.consider_all_requests_local = true
|
14
|
-
config.action_view.debug_rjs = true
|
14
|
+
#config.action_view.debug_rjs = true
|
15
15
|
config.action_controller.perform_caching = false
|
16
16
|
|
17
17
|
# Don't care if the mailer can't send
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateSecureMeetings < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :secure_meetings, id: false do |t|
|
4
|
+
t.primary_key :id
|
5
|
+
t.date :starts_at
|
6
|
+
t.date :ends_at
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :secure_meetings
|
13
|
+
end
|
14
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -9,72 +9,79 @@
|
|
9
9
|
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
10
10
|
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
11
11
|
#
|
12
|
-
# It's strongly recommended
|
12
|
+
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:
|
14
|
+
ActiveRecord::Schema.define(version: 20150707155107) do
|
15
15
|
|
16
|
-
create_table "active_meetings", :
|
16
|
+
create_table "active_meetings", force: :cascade do |t|
|
17
17
|
t.date "starts_at"
|
18
18
|
t.date "ends_at"
|
19
19
|
t.boolean "is_active"
|
20
|
-
t.datetime "created_at", :
|
21
|
-
t.datetime "updated_at", :
|
20
|
+
t.datetime "created_at", null: false
|
21
|
+
t.datetime "updated_at", null: false
|
22
22
|
end
|
23
23
|
|
24
|
-
create_table "end_overlap_meetings", :
|
24
|
+
create_table "end_overlap_meetings", force: :cascade do |t|
|
25
25
|
t.date "starts_at"
|
26
26
|
t.date "ends_at"
|
27
|
-
t.datetime "created_at", :
|
28
|
-
t.datetime "updated_at", :
|
27
|
+
t.datetime "created_at", null: false
|
28
|
+
t.datetime "updated_at", null: false
|
29
29
|
end
|
30
30
|
|
31
|
-
create_table "meetings", :
|
31
|
+
create_table "meetings", force: :cascade do |t|
|
32
32
|
t.date "starts_at"
|
33
33
|
t.date "ends_at"
|
34
|
-
t.datetime "created_at", :
|
35
|
-
t.datetime "updated_at", :
|
34
|
+
t.datetime "created_at", null: false
|
35
|
+
t.datetime "updated_at", null: false
|
36
36
|
end
|
37
37
|
|
38
|
-
create_table "positions", :
|
38
|
+
create_table "positions", force: :cascade do |t|
|
39
39
|
t.integer "user_id"
|
40
40
|
t.integer "time_slot_id"
|
41
|
-
t.datetime "created_at", :
|
42
|
-
t.datetime "updated_at", :
|
41
|
+
t.datetime "created_at", null: false
|
42
|
+
t.datetime "updated_at", null: false
|
43
43
|
end
|
44
44
|
|
45
|
-
create_table "
|
45
|
+
create_table "secure_meetings", force: :cascade do |t|
|
46
46
|
t.date "starts_at"
|
47
47
|
t.date "ends_at"
|
48
|
-
t.datetime "created_at"
|
49
|
-
t.datetime "updated_at"
|
48
|
+
t.datetime "created_at"
|
49
|
+
t.datetime "updated_at"
|
50
50
|
end
|
51
51
|
|
52
|
-
create_table "
|
52
|
+
create_table "start_end_overlap_meetings", force: :cascade do |t|
|
53
53
|
t.date "starts_at"
|
54
54
|
t.date "ends_at"
|
55
|
-
t.datetime "created_at", :
|
56
|
-
t.datetime "updated_at", :
|
55
|
+
t.datetime "created_at", null: false
|
56
|
+
t.datetime "updated_at", null: false
|
57
57
|
end
|
58
58
|
|
59
|
-
create_table "
|
59
|
+
create_table "start_overlap_meetings", force: :cascade do |t|
|
60
60
|
t.date "starts_at"
|
61
61
|
t.date "ends_at"
|
62
|
-
t.datetime "created_at", :
|
63
|
-
t.datetime "updated_at", :
|
62
|
+
t.datetime "created_at", null: false
|
63
|
+
t.datetime "updated_at", null: false
|
64
64
|
end
|
65
65
|
|
66
|
-
create_table "
|
66
|
+
create_table "time_slots", force: :cascade do |t|
|
67
|
+
t.date "starts_at"
|
68
|
+
t.date "ends_at"
|
69
|
+
t.datetime "created_at", null: false
|
70
|
+
t.datetime "updated_at", null: false
|
71
|
+
end
|
72
|
+
|
73
|
+
create_table "user_meetings", force: :cascade do |t|
|
67
74
|
t.integer "user_id"
|
68
75
|
t.date "starts_at"
|
69
76
|
t.date "ends_at"
|
70
|
-
t.datetime "created_at", :
|
71
|
-
t.datetime "updated_at", :
|
77
|
+
t.datetime "created_at", null: false
|
78
|
+
t.datetime "updated_at", null: false
|
72
79
|
end
|
73
80
|
|
74
|
-
create_table "users", :
|
81
|
+
create_table "users", force: :cascade do |t|
|
75
82
|
t.string "name"
|
76
|
-
t.datetime "created_at", :
|
77
|
-
t.datetime "updated_at", :
|
83
|
+
t.datetime "created_at", null: false
|
84
|
+
t.datetime "updated_at", null: false
|
78
85
|
end
|
79
86
|
|
80
87
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative '../../../spec_helper'
|
2
|
+
require_relative '../factories/secure_meeting'
|
3
|
+
|
4
|
+
describe SecureMeeting do
|
5
|
+
context "A model with a UUID as a primary key" do
|
6
|
+
before(:all) do
|
7
|
+
if SecureMeeting.count >= 1 then
|
8
|
+
SecureMeeting.delete_all
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it "updates the relevant record" do
|
13
|
+
securemeeting = FactoryGirl.create(:secure_meeting)
|
14
|
+
securemeeting.starts_at = '2012-01-05'.to_date
|
15
|
+
securemeeting.ends_at = '2012-02-05'.to_date
|
16
|
+
securemeeting.should be_valid
|
17
|
+
securemeeting.errors[:starts_at].should be_empty
|
18
|
+
securemeeting.errors[:ends_at].should be_empty
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/validates_overlap.gemspec
CHANGED
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.
|
4
|
+
version: 0.5.2
|
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
|
-
-
|
106
|
-
-
|
105
|
+
- .gitignore
|
106
|
+
- .travis.yml
|
107
107
|
- Gemfile
|
108
108
|
- Gemfile.rails30
|
109
109
|
- Gemfile.rails32
|
@@ -116,6 +116,7 @@ files:
|
|
116
116
|
- VERSION
|
117
117
|
- lib/validates_overlap.rb
|
118
118
|
- lib/validates_overlap/locale/en.yml
|
119
|
+
- lib/validates_overlap/locale/pt-BR.yml
|
119
120
|
- lib/validates_overlap/overlap_validator.rb
|
120
121
|
- spec/dummy/Rakefile
|
121
122
|
- spec/dummy/app/controllers/application_controller.rb
|
@@ -124,6 +125,7 @@ files:
|
|
124
125
|
- spec/dummy/app/models/end_overlap_meeting.rb
|
125
126
|
- spec/dummy/app/models/meeting.rb
|
126
127
|
- spec/dummy/app/models/position.rb
|
128
|
+
- spec/dummy/app/models/secure_meeting.rb
|
127
129
|
- spec/dummy/app/models/start_end_overlap_meeting.rb
|
128
130
|
- spec/dummy/app/models/start_overlap_meeting.rb
|
129
131
|
- spec/dummy/app/models/time_slot.rb
|
@@ -153,6 +155,7 @@ files:
|
|
153
155
|
- spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb
|
154
156
|
- spec/dummy/db/migrate/20121207162212_create_time_slot.rb
|
155
157
|
- spec/dummy/db/migrate/20130826155107_create_active_meetings.rb
|
158
|
+
- spec/dummy/db/migrate/20150707155107_create_secure_meetings.rb
|
156
159
|
- spec/dummy/db/schema.rb
|
157
160
|
- spec/dummy/public/404.html
|
158
161
|
- spec/dummy/public/422.html
|
@@ -170,6 +173,7 @@ files:
|
|
170
173
|
- spec/dummy/spec/factories/end_overlap_meeting.rb
|
171
174
|
- spec/dummy/spec/factories/meeting.rb
|
172
175
|
- spec/dummy/spec/factories/position.rb
|
176
|
+
- spec/dummy/spec/factories/secure_meeting.rb
|
173
177
|
- spec/dummy/spec/factories/start_end_overlap_meeting.rb
|
174
178
|
- spec/dummy/spec/factories/start_overlap_meeting.rb
|
175
179
|
- spec/dummy/spec/factories/time_slot.rb
|
@@ -179,6 +183,7 @@ files:
|
|
179
183
|
- spec/dummy/spec/models/end_overlap_meeting_spec.rb
|
180
184
|
- spec/dummy/spec/models/meeting_spec.rb
|
181
185
|
- spec/dummy/spec/models/position_spec.rb
|
186
|
+
- spec/dummy/spec/models/secure_meeting_spec.rb
|
182
187
|
- spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
|
183
188
|
- spec/dummy/spec/models/start_overlap_meeting_spec.rb
|
184
189
|
- spec/dummy/spec/models/time_slot_spec.rb
|
@@ -197,17 +202,17 @@ require_paths:
|
|
197
202
|
- lib
|
198
203
|
required_ruby_version: !ruby/object:Gem::Requirement
|
199
204
|
requirements:
|
200
|
-
- -
|
205
|
+
- - '>='
|
201
206
|
- !ruby/object:Gem::Version
|
202
207
|
version: '0'
|
203
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
209
|
requirements:
|
205
|
-
- -
|
210
|
+
- - '>='
|
206
211
|
- !ruby/object:Gem::Version
|
207
212
|
version: '0'
|
208
213
|
requirements: []
|
209
214
|
rubyforge_project:
|
210
|
-
rubygems_version: 2.
|
215
|
+
rubygems_version: 2.0.14
|
211
216
|
signing_key:
|
212
217
|
specification_version: 4
|
213
218
|
summary: This gem helps validate records with time overlap.
|
@@ -216,6 +221,7 @@ test_files:
|
|
216
221
|
- spec/dummy/spec/factories/end_overlap_meeting.rb
|
217
222
|
- spec/dummy/spec/factories/meeting.rb
|
218
223
|
- spec/dummy/spec/factories/position.rb
|
224
|
+
- spec/dummy/spec/factories/secure_meeting.rb
|
219
225
|
- spec/dummy/spec/factories/start_end_overlap_meeting.rb
|
220
226
|
- spec/dummy/spec/factories/start_overlap_meeting.rb
|
221
227
|
- spec/dummy/spec/factories/time_slot.rb
|
@@ -225,6 +231,7 @@ test_files:
|
|
225
231
|
- spec/dummy/spec/models/end_overlap_meeting_spec.rb
|
226
232
|
- spec/dummy/spec/models/meeting_spec.rb
|
227
233
|
- spec/dummy/spec/models/position_spec.rb
|
234
|
+
- spec/dummy/spec/models/secure_meeting_spec.rb
|
228
235
|
- spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
|
229
236
|
- spec/dummy/spec/models/start_overlap_meeting_spec.rb
|
230
237
|
- spec/dummy/spec/models/time_slot_spec.rb
|