sample_models 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +12 -0
- data/VERSION +1 -1
- data/lib/sample_models/attribute_sequence.rb +8 -3
- data/lib/sample_models/sampler.rb +15 -1
- data/sample_models.gemspec +1 -1
- data/test/setup/models.rb +4 -0
- data/test/setup/schema.rb +1 -0
- data/test/unit/configuration_test.rb +7 -0
- data/test/unit/sample_test.rb +2 -1
- metadata +1 -1
data/README.markdown
CHANGED
@@ -280,6 +280,18 @@ By default, SampleModels fills polymorphic associations with any record, chosen
|
|
280
280
|
bookmark.bookmarkable.default_class BlogPost
|
281
281
|
end
|
282
282
|
|
283
|
+
force_email_format
|
284
|
+
------------------
|
285
|
+
|
286
|
+
Use `force_email_format` if you want to ensure that for every newly
|
287
|
+
created instance, the field will be a valid email. This has the same
|
288
|
+
effect as `validates_email_format_of`, but won't change the behavior of
|
289
|
+
production code.
|
290
|
+
|
291
|
+
SampleModels.configure(User) do |user|
|
292
|
+
user.email.force_email_format
|
293
|
+
end
|
294
|
+
|
283
295
|
force_unique
|
284
296
|
------------
|
285
297
|
Use `force_unique` if you want to ensure that for every newly created instance, the field will be unique. This has the same effect as `validates_uniqueness_of`, but won't change how production code behaves.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0
|
1
|
+
2.1.0
|
@@ -37,9 +37,9 @@ module SampleModels
|
|
37
37
|
end
|
38
38
|
|
39
39
|
class Builder
|
40
|
-
def initialize(pass, model, column, force_unique)
|
41
|
-
@pass, @model, @column, @force_unique =
|
42
|
-
pass, model, column, force_unique
|
40
|
+
def initialize(pass, model, column, force_unique, force_email_format)
|
41
|
+
@pass, @model, @column, @force_unique, @force_email_format =
|
42
|
+
pass, model, column, force_unique, force_email_format
|
43
43
|
end
|
44
44
|
|
45
45
|
def base
|
@@ -51,6 +51,11 @@ module SampleModels
|
|
51
51
|
|
52
52
|
def run
|
53
53
|
input = base
|
54
|
+
if @force_email_format
|
55
|
+
input = ValidatesEmailFormatOfAttributeSequence.new(
|
56
|
+
@model, @column, nil, input
|
57
|
+
)
|
58
|
+
end
|
54
59
|
uniqueness_validation = if @force_unique
|
55
60
|
Model::Validation.new(:validates_uniqueness_of)
|
56
61
|
end
|
@@ -8,6 +8,7 @@ module SampleModels
|
|
8
8
|
@attribute_sequences = Hash.new { |h,k| h[k] = {} }
|
9
9
|
@defaults = HashWithIndifferentAccess.new
|
10
10
|
@forced_unique = []
|
11
|
+
@forced_email_format = []
|
11
12
|
@named_samples = HashWithIndifferentAccess.new
|
12
13
|
@polymorphic_default_classes = HashWithIndifferentAccess.new
|
13
14
|
end
|
@@ -15,7 +16,8 @@ module SampleModels
|
|
15
16
|
def attribute_sequence(pass, column)
|
16
17
|
@attribute_sequences[pass][column.name] ||= begin
|
17
18
|
AttributeSequence.build(
|
18
|
-
pass, model, column, @forced_unique.include?(column.name)
|
19
|
+
pass, model, column, @forced_unique.include?(column.name),
|
20
|
+
@forced_email_format.include?(column.name)
|
19
21
|
)
|
20
22
|
end
|
21
23
|
end
|
@@ -29,10 +31,18 @@ module SampleModels
|
|
29
31
|
attribute_sequence(:first, column)
|
30
32
|
end
|
31
33
|
|
34
|
+
def force_email_format(attr)
|
35
|
+
@forced_email_format << attr.to_s
|
36
|
+
end
|
37
|
+
|
32
38
|
def force_unique(attr)
|
33
39
|
@forced_unique << attr.to_s
|
34
40
|
end
|
35
41
|
|
42
|
+
def force_email_format(attr)
|
43
|
+
@forced_email_format << attr.to_s
|
44
|
+
end
|
45
|
+
|
36
46
|
def model
|
37
47
|
SampleModels.models[@model_class]
|
38
48
|
end
|
@@ -81,6 +91,10 @@ module SampleModels
|
|
81
91
|
def default_class(dc)
|
82
92
|
@sampler.polymorphic_default_classes[@attribute] = dc
|
83
93
|
end
|
94
|
+
|
95
|
+
def force_email_format
|
96
|
+
@sampler.force_email_format(@attribute)
|
97
|
+
end
|
84
98
|
|
85
99
|
def force_unique
|
86
100
|
@sampler.force_unique(@attribute)
|
data/sample_models.gemspec
CHANGED
data/test/setup/models.rb
CHANGED
@@ -190,6 +190,10 @@ SampleModels.configure(User) do |user|
|
|
190
190
|
user.external_user_id.default nil
|
191
191
|
end
|
192
192
|
|
193
|
+
SampleModels.configure(User2) do |user2|
|
194
|
+
user2.email.force_email_format
|
195
|
+
end
|
196
|
+
|
193
197
|
SampleModels.configure(Video) do |video|
|
194
198
|
video.before_save do |v, sample_attrs|
|
195
199
|
if v.episode && v.episode.show != v.show
|
data/test/setup/schema.rb
CHANGED
@@ -42,6 +42,13 @@ class ConfigurationTest < SampleModelsTestCase
|
|
42
42
|
assert_nil bp.published_at
|
43
43
|
end
|
44
44
|
|
45
|
+
def test_force_email_format
|
46
|
+
10.times do
|
47
|
+
user2 = User2.sample
|
48
|
+
assert_match /^.*@.*\..*/, user2.email
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
45
52
|
def test_before_save
|
46
53
|
assert_difference('Video.count') do
|
47
54
|
assert_difference('Episode.count') do
|
data/test/unit/sample_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__)
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '/../test_helper'))
|
2
2
|
|
3
3
|
class SampleTest < SampleModelsTestCase
|
4
4
|
def test_fills_non_validated_non_configured_fields_with_a_non_blank_value
|
@@ -109,6 +109,7 @@ class SampleTest < SampleModelsTestCase
|
|
109
109
|
|
110
110
|
def test_string_which_is_required_to_be_present_and_unique
|
111
111
|
# Ensuring that it doesn't get tripped up by a pre-existing record
|
112
|
+
User2.destroy_all
|
112
113
|
User2.create!(:login => 'login 1')
|
113
114
|
User2.sample
|
114
115
|
end
|