sexy_form 0.9.0
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 +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE +21 -0
- data/README.md +275 -0
- data/Rakefile +15 -0
- data/lib/sexy_form.rb +84 -0
- data/lib/sexy_form/builder.rb +306 -0
- data/lib/sexy_form/themes.rb +22 -0
- data/lib/sexy_form/themes/base_theme.rb +39 -0
- data/lib/sexy_form/themes/bootstrap_2_horizontal.rb +83 -0
- data/lib/sexy_form/themes/bootstrap_2_inline.rb +73 -0
- data/lib/sexy_form/themes/bootstrap_2_vertical.rb +80 -0
- data/lib/sexy_form/themes/bootstrap_3_horizontal.rb +95 -0
- data/lib/sexy_form/themes/bootstrap_3_inline.rb +71 -0
- data/lib/sexy_form/themes/bootstrap_3_vertical.rb +70 -0
- data/lib/sexy_form/themes/bootstrap_4_horizontal.rb +95 -0
- data/lib/sexy_form/themes/bootstrap_4_inline.rb +80 -0
- data/lib/sexy_form/themes/bootstrap_4_vertical.rb +79 -0
- data/lib/sexy_form/themes/bulma_horizontal.rb +81 -0
- data/lib/sexy_form/themes/bulma_vertical.rb +73 -0
- data/lib/sexy_form/themes/default.rb +55 -0
- data/lib/sexy_form/themes/foundation.rb +67 -0
- data/lib/sexy_form/themes/materialize.rb +65 -0
- data/lib/sexy_form/themes/milligram.rb +62 -0
- data/lib/sexy_form/themes/semantic_ui_inline.rb +63 -0
- data/lib/sexy_form/themes/semantic_ui_vertical.rb +63 -0
- data/lib/sexy_form/version.rb +3 -0
- data/spec/custom_assertions.rb +21 -0
- data/spec/sexy_form/builder_spec.rb +104 -0
- data/spec/sexy_form/themes/base_theme_spec.rb +16 -0
- data/spec/sexy_form/themes/bootstrap_2_horizontal_spec.rb +114 -0
- data/spec/sexy_form/themes/bootstrap_2_inline_spec.rb +108 -0
- data/spec/sexy_form/themes/bootstrap_2_vertical_spec.rb +111 -0
- data/spec/sexy_form/themes/bootstrap_3_horizontal_spec.rb +116 -0
- data/spec/sexy_form/themes/bootstrap_3_inline_spec.rb +104 -0
- data/spec/sexy_form/themes/bootstrap_3_vertical_spec.rb +122 -0
- data/spec/sexy_form/themes/bootstrap_4_horizontal_spec.rb +124 -0
- data/spec/sexy_form/themes/bootstrap_4_inline_spec.rb +116 -0
- data/spec/sexy_form/themes/bootstrap_4_vertical_spec.rb +114 -0
- data/spec/sexy_form/themes/bulma_horizontal_spec.rb +126 -0
- data/spec/sexy_form/themes/bulma_vertical_spec.rb +114 -0
- data/spec/sexy_form/themes/default_spec.rb +102 -0
- data/spec/sexy_form/themes/foundation_spec.rb +103 -0
- data/spec/sexy_form/themes/materialize_spec.rb +103 -0
- data/spec/sexy_form/themes/milligram_spec.rb +120 -0
- data/spec/sexy_form/themes/semantic_ui_inline_spec.rb +105 -0
- data/spec/sexy_form/themes/semantic_ui_vertical_spec.rb +105 -0
- data/spec/sexy_form/themes/theme_spec_helper.rb +0 -0
- data/spec/sexy_form/themes_spec.rb +52 -0
- data/spec/sexy_form_spec.rb +54 -0
- data/spec/spec_helper.rb +16 -0
- metadata +160 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require_relative "../../spec_helper"
|
|
2
|
+
require_relative "./theme_spec_helper"
|
|
3
|
+
|
|
4
|
+
theme_klass = SexyForm::Themes::Bootstrap4Vertical
|
|
5
|
+
theme = theme_klass.new
|
|
6
|
+
|
|
7
|
+
describe theme_klass do
|
|
8
|
+
|
|
9
|
+
describe ".theme_name" do
|
|
10
|
+
it "is correct" do
|
|
11
|
+
theme_klass.theme_name.should eq("bootstrap_4_vertical")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe ".wrap_field" do
|
|
16
|
+
it "works" do
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "SexyForm.form" do
|
|
22
|
+
it "matches docs example" do
|
|
23
|
+
expected = build_string do |str|
|
|
24
|
+
str << %Q(<form method="post">)
|
|
25
|
+
str << %Q(<div class="form-group">)
|
|
26
|
+
str << %Q(<label for="email">Email</label>)
|
|
27
|
+
str << %Q(<input type="text" class="form-control" name="email" id="email">)
|
|
28
|
+
str << "</div>"
|
|
29
|
+
|
|
30
|
+
str << %Q(<div class="form-group">)
|
|
31
|
+
str << %Q(<label for="password">Password</label>)
|
|
32
|
+
str << %Q(<input type="password" class="form-control" name="password" id="password">)
|
|
33
|
+
str << "</div>"
|
|
34
|
+
|
|
35
|
+
str << %Q(<div class="form-group form-check">)
|
|
36
|
+
str << %Q(<input type="checkbox" class="form-check-input" name="remember_me" id="remember_me">)
|
|
37
|
+
str << %Q(<label class="form-check-label" for="remember_me">Remember Me</label>)
|
|
38
|
+
str << "</div>"
|
|
39
|
+
|
|
40
|
+
str << %Q(<button type="submit" class="btn btn-primary">Sign in</button>)
|
|
41
|
+
str << "</form>"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
actual = SexyForm.form(theme: theme_klass.theme_name) do |f|
|
|
45
|
+
f << f.field(type: :text, name: :email)
|
|
46
|
+
f << f.field(type: :password, name: :password)
|
|
47
|
+
f << f.field(type: :checkbox, name: :remember_me)
|
|
48
|
+
f << %Q(<button type="submit" class="btn btn-primary">Sign in</button>)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
actual.should eq(expected)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe ".form_html_attributes" do
|
|
56
|
+
it "returns correct attributes" do
|
|
57
|
+
attrs = {}
|
|
58
|
+
|
|
59
|
+
theme.form_html_attributes(html_attrs: {}).should eq(attrs)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
SexyForm::Builder::FIELD_TYPES.each do |field_type|
|
|
64
|
+
describe ".input_html_attributes" do
|
|
65
|
+
it "returns correct #{field_type} attributes" do
|
|
66
|
+
attrs = {}
|
|
67
|
+
|
|
68
|
+
case field_type
|
|
69
|
+
when "checkbox", "radio"
|
|
70
|
+
attrs["class"] = "form-check-input"
|
|
71
|
+
when "file"
|
|
72
|
+
attrs["class"] = "form-control-file"
|
|
73
|
+
else
|
|
74
|
+
attrs["class"] = "form-control"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
theme.input_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe ".label_html_attributes" do
|
|
82
|
+
it "returns correct #{field_type} attributes" do
|
|
83
|
+
attrs = {}
|
|
84
|
+
|
|
85
|
+
if ["checkbox", "radio"].include?(field_type)
|
|
86
|
+
attrs["class"] = "form-check-label"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
theme.label_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe ".build_html_help_text" do
|
|
94
|
+
it "returns correct #{field_type} attributes" do
|
|
95
|
+
expected = "<small class=\"form-text\">foobar</small>"
|
|
96
|
+
|
|
97
|
+
attrs = {}
|
|
98
|
+
|
|
99
|
+
theme.build_html_help_text(html_attrs: attrs, field_type: field_type, help_text: "foobar").should eq(expected)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe ".build_html_error" do
|
|
104
|
+
it "returns correct #{field_type} attributes" do
|
|
105
|
+
expected = "<div class=\"invalid-feedback\">foobar</div>"
|
|
106
|
+
|
|
107
|
+
attrs = {}
|
|
108
|
+
|
|
109
|
+
theme.build_html_error(html_attrs: attrs, field_type: field_type, error: "foobar").should eq(expected)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require_relative "../../spec_helper"
|
|
2
|
+
require_relative "./theme_spec_helper"
|
|
3
|
+
|
|
4
|
+
theme_klass = SexyForm::Themes::BulmaHorizontal
|
|
5
|
+
theme = theme_klass.new
|
|
6
|
+
|
|
7
|
+
describe theme_klass do
|
|
8
|
+
|
|
9
|
+
describe ".theme_name" do
|
|
10
|
+
it "is correct" do
|
|
11
|
+
theme_klass.theme_name.should eq("bulma_horizontal")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe ".wrap_field" do
|
|
16
|
+
it "works" do
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "SexyForm.form" do
|
|
22
|
+
it "matches docs example with labels" do
|
|
23
|
+
expected = build_string do |str|
|
|
24
|
+
str << %Q(<form method="post">)
|
|
25
|
+
str << %Q(<div class="field is-horizontal">)
|
|
26
|
+
str << %Q(<label class="label is-normal" for="email">Email</label>)
|
|
27
|
+
str << %Q(<div class="field-body">)
|
|
28
|
+
str << %Q(<div class="field">)
|
|
29
|
+
str << %Q(<div class="control">)
|
|
30
|
+
str << %Q(<input type="text" name="email" id="email">)
|
|
31
|
+
str << "</div>"
|
|
32
|
+
str << "</div>"
|
|
33
|
+
str << "</div>"
|
|
34
|
+
str << "</div>"
|
|
35
|
+
|
|
36
|
+
str << %Q(<div class="field is-horizontal">)
|
|
37
|
+
str << %Q(<label class="label is-normal" for="password">Password</label>)
|
|
38
|
+
str << %Q(<div class="field-body">)
|
|
39
|
+
str << %Q(<div class="field">)
|
|
40
|
+
str << %Q(<div class="control">)
|
|
41
|
+
str << %Q(<input type="password" name="password" id="password">)
|
|
42
|
+
str << "</div>"
|
|
43
|
+
str << "</div>"
|
|
44
|
+
str << "</div>"
|
|
45
|
+
str << "</div>"
|
|
46
|
+
|
|
47
|
+
str << %Q(<div class="field is-horizontal">)
|
|
48
|
+
str << %Q(<div class="field-body">)
|
|
49
|
+
str << %Q(<div class="field">)
|
|
50
|
+
str << %Q(<div class="control">)
|
|
51
|
+
str << %Q(<label class="checkbox" for="remember_me">)
|
|
52
|
+
str << %Q(<input type="checkbox" name="remember_me" id="remember_me"> Remember Me)
|
|
53
|
+
str << %Q(</label>)
|
|
54
|
+
str << "</div>"
|
|
55
|
+
str << "</div>"
|
|
56
|
+
str << "</div>"
|
|
57
|
+
str << "</div>"
|
|
58
|
+
|
|
59
|
+
str << %Q(<button type="submit" class="button">Sign in</button>)
|
|
60
|
+
str << "</form>"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
actual = SexyForm.form(theme: theme_klass.theme_name) do |f|
|
|
64
|
+
f << f.field(type: :text, name: :email)
|
|
65
|
+
f << f.field(type: :password, name: :password)
|
|
66
|
+
f << f.field(type: :checkbox, name: :remember_me)
|
|
67
|
+
f << %Q(<button type="submit" class="button">Sign in</button>)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
actual.should eq(expected)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe ".form_html_attributes" do
|
|
75
|
+
it "returns correct attributes" do
|
|
76
|
+
attrs = {}
|
|
77
|
+
|
|
78
|
+
theme.form_html_attributes(html_attrs: {}).should eq(attrs)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
SexyForm::Builder::FIELD_TYPES.each do |field_type|
|
|
83
|
+
describe ".input_html_attributes" do
|
|
84
|
+
it "returns correct #{field_type} attributes" do
|
|
85
|
+
attrs = {}
|
|
86
|
+
|
|
87
|
+
theme.input_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe ".label_html_attributes" do
|
|
92
|
+
it "returns correct #{field_type} attributes" do
|
|
93
|
+
attrs = {}
|
|
94
|
+
|
|
95
|
+
if ["checkbox", "radio"].include?(field_type)
|
|
96
|
+
attrs["class"] = field_type
|
|
97
|
+
else
|
|
98
|
+
attrs["class"] = "label is-normal"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
theme.label_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe ".build_html_help_text" do
|
|
106
|
+
it "returns correct #{field_type} attributes" do
|
|
107
|
+
expected = "<p class=\"help\">foobar</p>"
|
|
108
|
+
|
|
109
|
+
attrs = {}
|
|
110
|
+
|
|
111
|
+
theme.build_html_help_text(html_attrs: attrs, field_type: field_type, help_text: "foobar").should eq(expected)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe ".build_html_error" do
|
|
116
|
+
it "returns correct #{field_type} attributes" do
|
|
117
|
+
expected = "<p class=\"help is-danger\">foobar</p>"
|
|
118
|
+
|
|
119
|
+
attrs = {}
|
|
120
|
+
|
|
121
|
+
theme.build_html_error(html_attrs: attrs, field_type: field_type, error: "foobar").should eq(expected)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require_relative "../../spec_helper"
|
|
2
|
+
require_relative "./theme_spec_helper"
|
|
3
|
+
|
|
4
|
+
theme_klass = SexyForm::Themes::BulmaVertical
|
|
5
|
+
theme = theme_klass.new
|
|
6
|
+
|
|
7
|
+
describe theme_klass do
|
|
8
|
+
|
|
9
|
+
describe ".theme_name" do
|
|
10
|
+
it "is correct" do
|
|
11
|
+
theme_klass.theme_name.should eq("bulma_vertical")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe ".wrap_field" do
|
|
16
|
+
it "works" do
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "SexyForm.form" do
|
|
22
|
+
it "matches docs example with labels" do
|
|
23
|
+
expected = build_string do |str|
|
|
24
|
+
str << %Q(<form method="post">)
|
|
25
|
+
str << %Q(<div class="field">)
|
|
26
|
+
str << %Q(<label class="label" for="email">Email</label>)
|
|
27
|
+
str << %Q(<div class="control">)
|
|
28
|
+
str << %Q(<input type="text" name="email" id="email">)
|
|
29
|
+
str << "</div>"
|
|
30
|
+
str << "</div>"
|
|
31
|
+
|
|
32
|
+
str << %Q(<div class="field">)
|
|
33
|
+
str << %Q(<label class="label" for="password">Password</label>)
|
|
34
|
+
str << %Q(<div class="control">)
|
|
35
|
+
str << %Q(<input type="password" name="password" id="password">)
|
|
36
|
+
str << "</div>"
|
|
37
|
+
str << "</div>"
|
|
38
|
+
|
|
39
|
+
str << %Q(<div class="field">)
|
|
40
|
+
str << %Q(<div class="control">)
|
|
41
|
+
str << %Q(<label class="checkbox" for="remember_me">)
|
|
42
|
+
str << %Q(<input type="checkbox" name="remember_me" id="remember_me"> Remember Me)
|
|
43
|
+
str << %Q(</label>)
|
|
44
|
+
str << "</div>"
|
|
45
|
+
str << "</div>"
|
|
46
|
+
|
|
47
|
+
str << %Q(<button type="submit" class="button">Sign in</button>)
|
|
48
|
+
str << "</form>"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
actual = SexyForm.form(theme: theme_klass.theme_name) do |f|
|
|
52
|
+
f << f.field(type: :text, name: :email)
|
|
53
|
+
f << f.field(type: :password, name: :password)
|
|
54
|
+
f << f.field(type: :checkbox, name: :remember_me)
|
|
55
|
+
f << %Q(<button type="submit" class="button">Sign in</button>)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
actual.should eq(expected)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe ".form_html_attributes" do
|
|
63
|
+
it "returns correct attributes" do
|
|
64
|
+
attrs = {}
|
|
65
|
+
|
|
66
|
+
theme.form_html_attributes(html_attrs: {}).should eq(attrs)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
SexyForm::Builder::FIELD_TYPES.each do |field_type|
|
|
71
|
+
describe ".input_html_attributes" do
|
|
72
|
+
it "returns correct #{field_type} attributes" do
|
|
73
|
+
attrs = {}
|
|
74
|
+
|
|
75
|
+
theme.input_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe ".label_html_attributes" do
|
|
80
|
+
it "returns correct #{field_type} attributes" do
|
|
81
|
+
attrs = {}
|
|
82
|
+
|
|
83
|
+
if ["checkbox", "radio"].include?(field_type)
|
|
84
|
+
attrs["class"] = field_type
|
|
85
|
+
else
|
|
86
|
+
attrs["class"] = "label"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
theme.label_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe ".build_html_help_text" do
|
|
94
|
+
it "returns correct #{field_type} attributes" do
|
|
95
|
+
expected = "<p class=\"help\">foobar</p>"
|
|
96
|
+
|
|
97
|
+
attrs = {}
|
|
98
|
+
|
|
99
|
+
theme.build_html_help_text(html_attrs: attrs, field_type: field_type, help_text: "foobar").should eq(expected)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe ".build_html_error" do
|
|
104
|
+
it "returns correct #{field_type} attributes" do
|
|
105
|
+
expected = "<p class=\"help is-danger\">foobar</p>"
|
|
106
|
+
|
|
107
|
+
attrs = {}
|
|
108
|
+
|
|
109
|
+
theme.build_html_error(html_attrs: attrs, field_type: field_type, error: "foobar").should eq(expected)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require_relative "../../spec_helper"
|
|
2
|
+
require_relative "./theme_spec_helper"
|
|
3
|
+
|
|
4
|
+
theme_klass = SexyForm::Themes::Default
|
|
5
|
+
theme = theme_klass.new
|
|
6
|
+
|
|
7
|
+
describe theme_klass do
|
|
8
|
+
|
|
9
|
+
describe ".theme_name" do
|
|
10
|
+
it "is correct" do
|
|
11
|
+
theme_klass.theme_name.should eq("default")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe ".wrap_field" do
|
|
16
|
+
it "works" do
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "SexyForm.form" do
|
|
22
|
+
it "matches docs example with labels" do
|
|
23
|
+
expected = build_string do |str|
|
|
24
|
+
str << %Q(<form method="post">)
|
|
25
|
+
str << %Q(<div>)
|
|
26
|
+
str << %Q(<label for="email">Email</label>)
|
|
27
|
+
str << %Q(<input type="text" name="email" id="email">)
|
|
28
|
+
str << "</div>"
|
|
29
|
+
|
|
30
|
+
str << %Q(<div>)
|
|
31
|
+
str << %Q(<label for="password">Password</label>)
|
|
32
|
+
str << %Q(<input type="password" name="password" id="password">)
|
|
33
|
+
str << "</div>"
|
|
34
|
+
|
|
35
|
+
str << %Q(<div>)
|
|
36
|
+
str << %Q(<label for="remember_me">)
|
|
37
|
+
str << %Q(<input type="checkbox" name="remember_me" id="remember_me"> Remember Me)
|
|
38
|
+
str << %Q(</label>)
|
|
39
|
+
str << "</div>"
|
|
40
|
+
|
|
41
|
+
str << %Q(<button type="submit">Sign in</button>)
|
|
42
|
+
str << "</form>"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
actual = SexyForm.form(theme: theme_klass.theme_name) do |f|
|
|
46
|
+
f << f.field(type: :text, name: :email)
|
|
47
|
+
f << f.field(type: :password, name: :password)
|
|
48
|
+
f << f.field(type: :checkbox, name: :remember_me)
|
|
49
|
+
f << %Q(<button type="submit">Sign in</button>)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
actual.should eq(expected)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe ".form_html_attributes" do
|
|
57
|
+
it "returns correct attributes" do
|
|
58
|
+
attrs = {}
|
|
59
|
+
|
|
60
|
+
theme.form_html_attributes(html_attrs: {}).should eq(attrs)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
SexyForm::Builder::FIELD_TYPES.each do |field_type|
|
|
65
|
+
describe ".input_html_attributes" do
|
|
66
|
+
it "returns correct #{field_type} attributes" do
|
|
67
|
+
attrs = {}
|
|
68
|
+
|
|
69
|
+
theme.input_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe ".label_html_attributes" do
|
|
74
|
+
it "returns correct #{field_type} attributes" do
|
|
75
|
+
attrs = {}
|
|
76
|
+
|
|
77
|
+
theme.label_html_attributes(html_attrs: {}, field_type: field_type, has_errors: false).should eq(attrs)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe ".build_html_help_text" do
|
|
82
|
+
it "returns correct #{field_type} attributes" do
|
|
83
|
+
expected = "<div>foobar</div>"
|
|
84
|
+
|
|
85
|
+
attrs = {}
|
|
86
|
+
|
|
87
|
+
theme.build_html_help_text(html_attrs: attrs, field_type: field_type, help_text: "foobar").should eq(expected)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe ".build_html_error" do
|
|
92
|
+
it "returns correct #{field_type} attributes" do
|
|
93
|
+
expected = "<div>foobar</div>"
|
|
94
|
+
|
|
95
|
+
attrs = {}
|
|
96
|
+
|
|
97
|
+
theme.build_html_error(html_attrs: attrs, field_type: field_type, error: "foobar").should eq(expected)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|