rapid-core 0.1
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.
- data/.gitignore +7 -0
- data/.rspec +2 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +53 -0
- data/Rakefile +61 -0
- data/cucumber.yml +3 -0
- data/doc/plan.txt +89 -0
- data/doc/scaffold/controller.rb +83 -0
- data/doc/scaffold/helper.rb +2 -0
- data/doc/scaffold/model.rb +5 -0
- data/doc/scaffold/rapid_scaffold.rb +5 -0
- data/doc/scaffold/views/_form.html.erb +25 -0
- data/doc/scaffold/views/edit.html.erb +6 -0
- data/doc/scaffold/views/index.html.erb +25 -0
- data/doc/scaffold/views/new.html.erb +5 -0
- data/doc/scaffold/views/show.html.erb +15 -0
- data/features/settings/boolean/default.feature +36 -0
- data/features/settings/double-nested/default.feature +50 -0
- data/features/settings/double-nested/if.feature +41 -0
- data/features/settings/double-nested/unless.feature +39 -0
- data/features/settings/double-nested/validates/exclusion_of.feature +30 -0
- data/features/settings/double-nested/validates/format_of.feature +30 -0
- data/features/settings/double-nested/validates/inclusion_of.feature +30 -0
- data/features/settings/double-nested/validates/length_of.feature +30 -0
- data/features/settings/double-nested/validates/presence_of.feature +37 -0
- data/features/settings/double-nested/validates/size_of.feature +30 -0
- data/features/settings/integer/default.feature +49 -0
- data/features/settings/nested/default.feature +50 -0
- data/features/settings/nested/if.feature +53 -0
- data/features/settings/nested/unless.feature +32 -0
- data/features/settings/nested/validates/exclusion_of.feature +30 -0
- data/features/settings/nested/validates/format_of.feature +30 -0
- data/features/settings/nested/validates/inclusion_of.feature +30 -0
- data/features/settings/nested/validates/length_of.feature +30 -0
- data/features/settings/nested/validates/presence_of.feature +37 -0
- data/features/settings/nested/validates/size_of.feature +30 -0
- data/features/settings/not_found.feature +33 -0
- data/features/settings/string/default.feature +36 -0
- data/features/settings/string/validates/exclusion_of.feature +30 -0
- data/features/settings/string/validates/format_of.feature +30 -0
- data/features/settings/string/validates/inclusion_of.feature +30 -0
- data/features/settings/string/validates/length_of.feature +30 -0
- data/features/settings/string/validates/presence_of.feature +37 -0
- data/features/settings/string/validates/size_of.feature +30 -0
- data/features/step_definitions/settings_steps.rb +92 -0
- data/features/step_definitions/skeleton_steps.rb +68 -0
- data/features/step_definitions/template_steps.rb +39 -0
- data/features/support/env.rb +6 -0
- data/features/templates/comment_if.feature +55 -0
- data/features/templates/comment_unless.feature +56 -0
- data/features/templates/for/for.feature +51 -0
- data/features/templates/if/else.feature +60 -0
- data/features/templates/if/elsif.feature +82 -0
- data/features/templates/if/if.feature +55 -0
- data/features/templates/namespaces/exist.feature +54 -0
- data/features/templates/static.feature +37 -0
- data/features/templates/variables.feature +61 -0
- data/lib/rapid/check.rb +162 -0
- data/lib/rapid/core.rb +37 -0
- data/lib/rapid/error.rb +84 -0
- data/lib/rapid/module.rb +35 -0
- data/lib/rapid/railtie.rb +18 -0
- data/lib/rapid/setting/base.rb +35 -0
- data/lib/rapid/setting/boolean_setting.rb +17 -0
- data/lib/rapid/setting/class_hash.rb +34 -0
- data/lib/rapid/setting/comments.rb +25 -0
- data/lib/rapid/setting/definer.rb +151 -0
- data/lib/rapid/setting/instance_hash.rb +132 -0
- data/lib/rapid/setting/instance_root.rb +107 -0
- data/lib/rapid/setting/integer_setting.rb +24 -0
- data/lib/rapid/setting/namespace/base.rb +113 -0
- data/lib/rapid/setting/namespace/instance.rb +84 -0
- data/lib/rapid/setting/nested_validations.rb +86 -0
- data/lib/rapid/setting/string_setting.rb +13 -0
- data/lib/rapid/settings.rb +129 -0
- data/lib/rapid/skeleton/base.rb +164 -0
- data/lib/rapid/skeleton/helpers/directory.rb +53 -0
- data/lib/rapid/skeleton/helpers/gem.rb +133 -0
- data/lib/rapid/skeleton/helpers/migration.rb +46 -0
- data/lib/rapid/skeleton/helpers/route.rb +115 -0
- data/lib/rapid/skeleton/helpers/script.rb +33 -0
- data/lib/rapid/skeleton/helpers/template.rb +73 -0
- data/lib/rapid/skeleton/helpers/view.rb +35 -0
- data/lib/rapid/spec/template.rb +104 -0
- data/lib/rapid/spec.rb +1 -0
- data/lib/rapid/tasks.rb +29 -0
- data/lib/rapid/template/base.rb +49 -0
- data/lib/rapid/template/node/base.rb +43 -0
- data/lib/rapid/template/node/comment_node.rb +42 -0
- data/lib/rapid/template/node/if_node.rb +109 -0
- data/lib/rapid/template/node/root.rb +51 -0
- data/lib/rapid/template/node/static.rb +29 -0
- data/lib/rapid/template/node/variable.rb +86 -0
- data/lib/rapid/template/parser.rb +167 -0
- data/lib/rapid/template/pulling/base.rb +91 -0
- data/lib/rapid/template/pulling/explicit.rb +92 -0
- data/lib/rapid/template/pulling/forgiving.rb +58 -0
- data/lib/rapid/version.rb +3 -0
- data/lib/rapid.rb +37 -0
- data/rapid-core.gemspec +26 -0
- data/spec/rapid/check_spec.rb +119 -0
- data/spec/rapid/error_spec.rb +14 -0
- data/spec/rapid/module_spec.rb +28 -0
- data/spec/rapid/setting/base_spec.rb +17 -0
- data/spec/rapid/setting/definer_spec.rb +318 -0
- data/spec/rapid/setting/instance_root_spec.rb +161 -0
- data/spec/rapid/setting/namespace/base_spec.rb +93 -0
- data/spec/rapid/setting/namespace/instance_spec.rb +12 -0
- data/spec/rapid/setting/nested_validations_spec.rb +72 -0
- data/spec/rapid/settings_spec.rb +51 -0
- data/spec/rapid/skeleton/base_spec.rb +224 -0
- data/spec/rapid/skeleton/helpers/directory_spec.rb +104 -0
- data/spec/rapid/skeleton/helpers/gem_spec.rb +180 -0
- data/spec/rapid/skeleton/helpers/migration_spec.rb +23 -0
- data/spec/rapid/skeleton/helpers/route_spec.rb +120 -0
- data/spec/rapid/skeleton/helpers/script_spec.rb +57 -0
- data/spec/rapid/skeleton/helpers/template_spec.rb +142 -0
- data/spec/rapid/skeleton/helpers/view_spec.rb +54 -0
- data/spec/rapid/spec/template_spec.rb +168 -0
- data/spec/rapid/template/base_spec.rb +290 -0
- data/spec/rapid/template/node/base_spec.rb +9 -0
- data/spec/rapid/template/node/comment_node_spec.rb +46 -0
- data/spec/rapid/template/node/if_node_spec.rb +28 -0
- data/spec/rapid/template/node/root_spec.rb +9 -0
- data/spec/rapid/template/node/static_spec.rb +17 -0
- data/spec/rapid/template/node/variable_spec.rb +87 -0
- data/spec/rapid/template/parser_spec.rb +187 -0
- data/spec/rapid/template/pulling/base_spec.rb +81 -0
- data/spec/rapid/template/pulling/explicit_spec.rb +33 -0
- data/spec/rapid/template/pulling/forgiving_spec.rb +132 -0
- data/spec/spec_helper.rb +10 -0
- metadata +325 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_length_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.author.name"
|
10
|
+
|
11
|
+
validates_length_of "app.author.name", :minimum => 3
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.author.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.author.name: Me
|
28
|
+
"""
|
29
|
+
Then "app.author.name" should have a "is too short (minimum is 3 characters)" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Feature: validates_presence_of nested settings
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.author.name"
|
10
|
+
|
11
|
+
validates_presence_of "app.author.name"
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Non-blank value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.author.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: nil value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
"""
|
28
|
+
Then "app.author.name" should have a "can't be blank" error
|
29
|
+
And vice versa
|
30
|
+
|
31
|
+
Scenario: blank value
|
32
|
+
When I load:
|
33
|
+
"""
|
34
|
+
app.author.name:
|
35
|
+
"""
|
36
|
+
Then "app.author.name" should have a "can't be blank" error
|
37
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_size_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.author.name"
|
10
|
+
|
11
|
+
validates_size_of "app.author.name", :minimum => 3
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.author.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.author.name: Me
|
28
|
+
"""
|
29
|
+
Then "app.author.name" should have a "is too short (minimum is 3 characters)" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,49 @@
|
|
1
|
+
Feature: Default integer
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.integer :max_users
|
10
|
+
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: Non-blank value
|
15
|
+
When I load:
|
16
|
+
"""
|
17
|
+
max_users: 5
|
18
|
+
"""
|
19
|
+
Then I should be good
|
20
|
+
And vice versa
|
21
|
+
|
22
|
+
Scenario: Invalid value
|
23
|
+
When I load:
|
24
|
+
"""
|
25
|
+
max_users: hi
|
26
|
+
"""
|
27
|
+
Then "max_users" should have a "doesn't allow values of that type" error
|
28
|
+
|
29
|
+
Scenario: decimal value
|
30
|
+
When I load:
|
31
|
+
"""
|
32
|
+
max_users: 2.5
|
33
|
+
"""
|
34
|
+
Then "max_users" should have a "doesn't allow values of that type" error
|
35
|
+
|
36
|
+
Scenario: nil value
|
37
|
+
When I load:
|
38
|
+
"""
|
39
|
+
"""
|
40
|
+
Then I should be good
|
41
|
+
And vice versa
|
42
|
+
|
43
|
+
Scenario: blank value
|
44
|
+
When I load:
|
45
|
+
"""
|
46
|
+
max_users:
|
47
|
+
"""
|
48
|
+
Then I should be good
|
49
|
+
And vice versa
|
@@ -0,0 +1,50 @@
|
|
1
|
+
Feature: Default single nesting
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.name"
|
10
|
+
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: Non-blank value
|
15
|
+
When I load:
|
16
|
+
"""
|
17
|
+
app.name: Rapid
|
18
|
+
"""
|
19
|
+
Then I should be good
|
20
|
+
And vice versa
|
21
|
+
|
22
|
+
Scenario: nil value
|
23
|
+
When I load:
|
24
|
+
"""
|
25
|
+
"""
|
26
|
+
Then I should be good
|
27
|
+
And vice versa
|
28
|
+
|
29
|
+
Scenario: nil nested value
|
30
|
+
When I load:
|
31
|
+
"""
|
32
|
+
app:
|
33
|
+
"""
|
34
|
+
Then I should be good
|
35
|
+
# And vice versa # TODO
|
36
|
+
|
37
|
+
Scenario: blank value
|
38
|
+
When I load:
|
39
|
+
"""
|
40
|
+
app.name:
|
41
|
+
"""
|
42
|
+
Then I should be good
|
43
|
+
And vice versa
|
44
|
+
|
45
|
+
Scenario: integer value
|
46
|
+
When I load:
|
47
|
+
"""
|
48
|
+
app: 1
|
49
|
+
"""
|
50
|
+
Then "app" should have a "doesn't allow values of that type" error
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Feature: nested validates with an if parameter
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string 'app.author.name'
|
10
|
+
setting.string 'app.name'
|
11
|
+
|
12
|
+
validates_presence_of "app.author.name", :if => "_root.app.name"
|
13
|
+
|
14
|
+
end
|
15
|
+
"""
|
16
|
+
|
17
|
+
Scenario: Valid value
|
18
|
+
When I load:
|
19
|
+
"""
|
20
|
+
app.name: Rapid
|
21
|
+
app.author.name: Dan
|
22
|
+
"""
|
23
|
+
Then I should be good
|
24
|
+
And vice versa
|
25
|
+
|
26
|
+
Scenario: Invalid value
|
27
|
+
When I load:
|
28
|
+
"""
|
29
|
+
app.name: Dan
|
30
|
+
"""
|
31
|
+
Then "app.author.name" should have a "can't be blank" error
|
32
|
+
And vice versa
|
33
|
+
|
34
|
+
Scenario: across namespaces
|
35
|
+
Given settings "my_settings2.rb":
|
36
|
+
"""
|
37
|
+
class MySettings2
|
38
|
+
include Rapid::Settings
|
39
|
+
|
40
|
+
setting.string 'author.name'
|
41
|
+
setting.string 'app.name'
|
42
|
+
|
43
|
+
validates_presence_of "author.name", :if => "_root.app.name"
|
44
|
+
|
45
|
+
end
|
46
|
+
"""
|
47
|
+
When I load:
|
48
|
+
"""
|
49
|
+
app.name: Rapid
|
50
|
+
"""
|
51
|
+
Then "author.name" should have a "can't be blank" error
|
52
|
+
And vice versa
|
53
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Feature: nested validates with an unless parameter
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string 'app.author.name'
|
10
|
+
setting.string 'app.name'
|
11
|
+
|
12
|
+
validates_presence_of "app.author.name", :unless => "_root.app.name"
|
13
|
+
|
14
|
+
end
|
15
|
+
"""
|
16
|
+
|
17
|
+
Scenario: Valid value
|
18
|
+
When I load:
|
19
|
+
"""
|
20
|
+
app.name: Rapid
|
21
|
+
app.author.name: Dan
|
22
|
+
"""
|
23
|
+
Then I should be good
|
24
|
+
And vice versa
|
25
|
+
|
26
|
+
Scenario: Invalid value
|
27
|
+
When I load:
|
28
|
+
"""
|
29
|
+
|
30
|
+
"""
|
31
|
+
Then "app.author.name" should have a "can't be blank" error
|
32
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_exclusion_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string 'app.name'
|
10
|
+
|
11
|
+
validates_exclusion_of "app.name", :in => %w(test)
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.name: test
|
28
|
+
"""
|
29
|
+
Then "app.name" should have a "is reserved" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_format_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string 'app.version'
|
10
|
+
|
11
|
+
validates_format_of 'app.version', :with => /^[0-9]+\.[0-9]+$/
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.version: "1.0"
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.version: 1.0a
|
28
|
+
"""
|
29
|
+
Then "app.version" should have a "is invalid" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_inclusion_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string 'app.version'
|
10
|
+
|
11
|
+
validates_inclusion_of 'app.version', :in => %w(1.0 1.1)
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Included value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.version: "1.0"
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Non-included value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.version: "2.0"
|
28
|
+
"""
|
29
|
+
Then "app.version" should have a "is not included in the list" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_length_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.name"
|
10
|
+
|
11
|
+
validates_length_of "app.name", :minimum => 3
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.name: Me
|
28
|
+
"""
|
29
|
+
Then "app.name" should have a "is too short (minimum is 3 characters)" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Feature: validates_presence_of nested settings
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.name"
|
10
|
+
|
11
|
+
validates_presence_of "app.name"
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Non-blank value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: nil value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
"""
|
28
|
+
Then "app.name" should have a "can't be blank" error
|
29
|
+
And vice versa
|
30
|
+
|
31
|
+
Scenario: blank value
|
32
|
+
When I load:
|
33
|
+
"""
|
34
|
+
app.name:
|
35
|
+
"""
|
36
|
+
Then "app.name" should have a "can't be blank" error
|
37
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: nested validates_size_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string "app.name"
|
10
|
+
|
11
|
+
validates_size_of "app.name", :minimum => 3
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
app.name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
app.name: Me
|
28
|
+
"""
|
29
|
+
Then "app.name" should have a "is too short (minimum is 3 characters)" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Settings handling not found cases
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :name
|
10
|
+
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: Referencing a setting that does not exist
|
15
|
+
When I load:
|
16
|
+
"""
|
17
|
+
author: Dan
|
18
|
+
"""
|
19
|
+
Then "author" should have a "can't be found" error
|
20
|
+
|
21
|
+
Scenario: Referencing a setting under a namespace that doesn't exist
|
22
|
+
When I load:
|
23
|
+
"""
|
24
|
+
app.author: Dan
|
25
|
+
"""
|
26
|
+
Then "app" should have a "can't be found" error
|
27
|
+
|
28
|
+
Scenario: Incorrectly treating a setting is a namespace
|
29
|
+
When I load:
|
30
|
+
"""
|
31
|
+
name.version: 1.0
|
32
|
+
"""
|
33
|
+
Then "name" should have a "doesn't allow values of that type" error
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Feature: Default string
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :name
|
10
|
+
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: Non-blank value
|
15
|
+
When I load:
|
16
|
+
"""
|
17
|
+
name: Dan
|
18
|
+
"""
|
19
|
+
Then I should be good
|
20
|
+
And vice versa
|
21
|
+
|
22
|
+
Scenario: nil value
|
23
|
+
When I load:
|
24
|
+
"""
|
25
|
+
"""
|
26
|
+
Then I should be good
|
27
|
+
And vice versa
|
28
|
+
|
29
|
+
Scenario: blank value
|
30
|
+
When I load:
|
31
|
+
"""
|
32
|
+
name:
|
33
|
+
"""
|
34
|
+
Then I should be good
|
35
|
+
And vice versa
|
36
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: string validates_exclusion_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :name
|
10
|
+
|
11
|
+
validates_exclusion_of :name, :in => %w(test)
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
name: test
|
28
|
+
"""
|
29
|
+
Then "name" should have a "is reserved" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: string validates_format_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :version
|
10
|
+
|
11
|
+
validates_format_of :version, :with => /^[0-9]+\.[0-9]+$/
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
version: "1.0"
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
version: 1.0a
|
28
|
+
"""
|
29
|
+
Then "version" should have a "is invalid" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: string validates_inclusion_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :version
|
10
|
+
|
11
|
+
validates_inclusion_of :version, :in => %w(1.0 1.1)
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Included value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
version: "1.0"
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Non-included value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
version: "2.0"
|
28
|
+
"""
|
29
|
+
Then "version" should have a "is not included in the list" error
|
30
|
+
And vice versa
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: string validates_length_of
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given settings "my_settings.rb":
|
5
|
+
"""
|
6
|
+
class MySettings
|
7
|
+
include Rapid::Settings
|
8
|
+
|
9
|
+
setting.string :name
|
10
|
+
|
11
|
+
validates_length_of :name, :minimum => 3
|
12
|
+
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
|
16
|
+
Scenario: Valid value
|
17
|
+
When I load:
|
18
|
+
"""
|
19
|
+
name: Dan
|
20
|
+
"""
|
21
|
+
Then I should be good
|
22
|
+
And vice versa
|
23
|
+
|
24
|
+
Scenario: Invalid value
|
25
|
+
When I load:
|
26
|
+
"""
|
27
|
+
name: Me
|
28
|
+
"""
|
29
|
+
Then "name" should have a "is too short (minimum is 3 characters)" error
|
30
|
+
And vice versa
|