validates_overlap 0.5.1 → 0.5.2

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: 1f52e21cae0ed67d7035a9523672ef94e66549e5
4
- data.tar.gz: 32e4fc3767599a660bf04ecb77e0e7b05da8adb5
3
+ metadata.gz: c44e9ddad60fc792566aa1102f2a3e85c28f3ba0
4
+ data.tar.gz: fd2bcb9278232214532fd6f0c794c148b53caf94
5
5
  SHA512:
6
- metadata.gz: 0dd4746359bcb5c47d60184c6e80c13a41add3338650f670d2b63faeb5157cd9f62c8dcca5cfb512317aa3ddf667d63b7bcf7746f8ab225b63874ae94f5f6f50
7
- data.tar.gz: 69aa3757a23e6615e0adea8129c034b1c83e6cb2e616074ee73125f140e4bba33c358d3869487edf85127cce38c1b27fe0101a8e1274528fd3d609ce3de4d730
6
+ metadata.gz: 052f57ccaf9569cb66aa4c93ccfc870ff4978683cbd4208ddb924bac1919361a7db430ed1b2aca8cad10456e32edba1474b8d99054c14b2c0fa776c7cced43fc
7
+ data.tar.gz: 1789ddb16c06fa4d5c7faf96a6c0115986817f6c553f130c323486b6718dd90579fb17fbbaff0b784fea0a3589f01868fb738ea34e822c0749557bcf1aaae696
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.1
1
+ 0.5.2
@@ -0,0 +1,4 @@
1
+ pt-BR:
2
+ errors:
3
+ messages:
4
+ overlap: coincide com outro registro
@@ -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)}.#{primary_key_name} != #{record.send(primary_key_name)}"
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.send(:"#{attr_name}")
168
+ record.read_attribute(attr_name)
164
169
  end
165
170
  end
166
171
 
@@ -0,0 +1,3 @@
1
+ class SecureMeeting < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => true
3
+ end
@@ -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
@@ -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 to check this file into your version control system.
12
+ # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20130826155107) do
14
+ ActiveRecord::Schema.define(version: 20150707155107) do
15
15
 
16
- create_table "active_meetings", :force => true do |t|
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", :null => false
21
- t.datetime "updated_at", :null => false
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", :force => true do |t|
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", :null => false
28
- t.datetime "updated_at", :null => false
27
+ t.datetime "created_at", null: false
28
+ t.datetime "updated_at", null: false
29
29
  end
30
30
 
31
- create_table "meetings", :force => true do |t|
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", :null => false
35
- t.datetime "updated_at", :null => false
34
+ t.datetime "created_at", null: false
35
+ t.datetime "updated_at", null: false
36
36
  end
37
37
 
38
- create_table "positions", :force => true do |t|
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", :null => false
42
- t.datetime "updated_at", :null => false
41
+ t.datetime "created_at", null: false
42
+ t.datetime "updated_at", null: false
43
43
  end
44
44
 
45
- create_table "start_end_overlap_meetings", :force => true do |t|
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", :null => false
49
- t.datetime "updated_at", :null => false
48
+ t.datetime "created_at"
49
+ t.datetime "updated_at"
50
50
  end
51
51
 
52
- create_table "start_overlap_meetings", :force => true do |t|
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", :null => false
56
- t.datetime "updated_at", :null => false
55
+ t.datetime "created_at", null: false
56
+ t.datetime "updated_at", null: false
57
57
  end
58
58
 
59
- create_table "time_slots", :force => true do |t|
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", :null => false
63
- t.datetime "updated_at", :null => false
62
+ t.datetime "created_at", null: false
63
+ t.datetime "updated_at", null: false
64
64
  end
65
65
 
66
- create_table "user_meetings", :force => true do |t|
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", :null => false
71
- t.datetime "updated_at", :null => false
77
+ t.datetime "created_at", null: false
78
+ t.datetime "updated_at", null: false
72
79
  end
73
80
 
74
- create_table "users", :force => true do |t|
81
+ create_table "users", force: :cascade do |t|
75
82
  t.string "name"
76
- t.datetime "created_at", :null => false
77
- t.datetime "updated_at", :null => false
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,6 @@
1
+ FactoryGirl.define do
2
+ factory :secure_meeting do |u|
3
+ u.starts_at '2010-11-05'.to_date
4
+ u.ends_at '2010-11-08'.to_date
5
+ end
6
+ 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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "validates_overlap"
5
- s.version = "0.5.1"
5
+ s.version = File.read('VERSION')
6
6
 
7
7
  s.authors = ["Robin Bortlik"]
8
8
  s.date = "2013-10-18"
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.1
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
- - ".gitignore"
106
- - ".travis.yml"
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.4.7
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