bootstrap_form 2.5.2 → 2.5.3
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/README.md +14 -7
- data/lib/bootstrap_form/version.rb +1 -1
- data/test/bootstrap_checkbox_test.rb +25 -25
- data/test/bootstrap_fields_test.rb +23 -23
- data/test/bootstrap_form_group_test.rb +39 -39
- data/test/bootstrap_form_test.rb +26 -26
- data/test/bootstrap_other_components_test.rb +8 -8
- data/test/bootstrap_radio_button_test.rb +18 -18
- data/test/bootstrap_selects_test.rb +22 -22
- data/test/dummy/Rakefile +4 -0
- data/test/dummy/config/environments/test.rb +19 -2
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +3172 -0
- data/test/special_form_class_models_test.rb +3 -3
- data/test/test_helper.rb +67 -1
- metadata +61 -5
@@ -15,7 +15,7 @@ class SpecialFormClassModelsTest < ActionView::TestCase
|
|
15
15
|
I18n.backend.store_translations(:en, {activerecord: {help: {user: {password: "A good password should be at least six characters long"}}}})
|
16
16
|
|
17
17
|
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><input class="form-control" id="user_misc" name="user[misc]" type="date" /></div>}
|
18
|
-
|
18
|
+
assert_equivalent_xml expected, @builder.date_field(:misc)
|
19
19
|
end
|
20
20
|
|
21
21
|
test "Nil models are supported for form builder" do
|
@@ -25,7 +25,7 @@ class SpecialFormClassModelsTest < ActionView::TestCase
|
|
25
25
|
I18n.backend.store_translations(:en, {activerecord: {help: {user: {password: "A good password should be at least six characters long"}}}})
|
26
26
|
|
27
27
|
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><input class="form-control" id="user_misc" name="user[misc]" type="date" /></div>}
|
28
|
-
|
28
|
+
assert_equivalent_xml expected, @builder.date_field(:misc)
|
29
29
|
end
|
30
30
|
|
31
31
|
test "Objects without model names are supported for form builder" do
|
@@ -37,7 +37,7 @@ class SpecialFormClassModelsTest < ActionView::TestCase
|
|
37
37
|
I18n.backend.store_translations(:en, {activerecord: {help: {faux_user: {password: "A good password should be at least six characters long"}}}})
|
38
38
|
|
39
39
|
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><input class="form-control" id="user_misc" name="user[misc]" type="date" /></div>}
|
40
|
-
|
40
|
+
assert_equivalent_xml expected, @builder.date_field(:misc)
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'timecop'
|
2
|
+
require 'diffy'
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'equivalent-xml'
|
2
5
|
require 'mocha/mini_test'
|
3
6
|
|
4
7
|
# Configure Rails Environment
|
@@ -16,5 +19,68 @@ def setup_test_fixture
|
|
16
19
|
@user = User.new(email: 'steve@example.com', password: 'secret', comments: 'my comment')
|
17
20
|
@builder = BootstrapForm::FormBuilder.new(:user, @user, self, {})
|
18
21
|
@horizontal_builder = BootstrapForm::FormBuilder.new(:user, @user, self, { layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10" })
|
19
|
-
I18n.backend.store_translations(:en, {
|
22
|
+
I18n.backend.store_translations(:en, {
|
23
|
+
activerecord: {
|
24
|
+
attributes: {
|
25
|
+
user: {
|
26
|
+
email: "Email"
|
27
|
+
}
|
28
|
+
},
|
29
|
+
help: {
|
30
|
+
user: {
|
31
|
+
password: "A good password should be at least six characters long"
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
})
|
36
|
+
end
|
37
|
+
|
38
|
+
def sort_attributes doc
|
39
|
+
doc.dup.traverse do |node|
|
40
|
+
if node.is_a?(Nokogiri::XML::Element)
|
41
|
+
attributes = node.attribute_nodes.sort_by(&:name)
|
42
|
+
attributes.each do |attribute|
|
43
|
+
node.delete(attribute.name)
|
44
|
+
node[attribute.name] = attribute.value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
node
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class ActionView::TestCase
|
52
|
+
def assert_equivalent_xml(expected, actual)
|
53
|
+
expected_xml = Nokogiri::XML(expected)
|
54
|
+
actual_xml = Nokogiri::XML(actual)
|
55
|
+
ignored_attributes = %w(style data-disable-with)
|
56
|
+
equivalent = EquivalentXml.equivalent?(expected_xml, actual_xml, {
|
57
|
+
ignore_attr_values: ignored_attributes
|
58
|
+
}) do |a, b, result|
|
59
|
+
if result === false && b.is_a?(Nokogiri::XML::Element)
|
60
|
+
if b.attr('name') == 'utf8'
|
61
|
+
# Handle wrapped utf8 hidden field for Rails 4.2+
|
62
|
+
result = EquivalentXml.equivalent?(a.child, b)
|
63
|
+
end
|
64
|
+
if b.delete('data-disable-with')
|
65
|
+
# Remove data-disable-with for Rails 5+
|
66
|
+
# Workaround because ignoring in EquivalentXml doesn't work
|
67
|
+
result = EquivalentXml.equivalent?(a, b)
|
68
|
+
end
|
69
|
+
if a.attr('type') == 'datetime' && b.attr('type') == 'datetime-local'
|
70
|
+
a.delete('type')
|
71
|
+
b.delete('type')
|
72
|
+
# Handle new datetime type for Rails 5+
|
73
|
+
result = EquivalentXml.equivalent?(a, b)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
result
|
77
|
+
end
|
78
|
+
assert equivalent, lambda {
|
79
|
+
# using a lambda because diffing is expensive
|
80
|
+
Diffy::Diff.new(
|
81
|
+
sort_attributes(expected_xml.root),
|
82
|
+
sort_attributes(actual_xml.root)
|
83
|
+
).to_s(:color)
|
84
|
+
}
|
85
|
+
end
|
20
86
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Potenza
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-12-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mime-types
|
@@ -29,14 +29,14 @@ dependencies:
|
|
29
29
|
name: rails
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '4.0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '4.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
@@ -81,6 +81,62 @@ dependencies:
|
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: appraisal
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: equivalent-xml
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: nokogiri
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: diffy
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
84
140
|
description: bootstrap_form is a rails form builder that makes it super easy to create
|
85
141
|
beautiful-looking forms using Twitter Bootstrap 3+
|
86
142
|
email:
|
@@ -181,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
237
|
version: '0'
|
182
238
|
requirements: []
|
183
239
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.6.
|
240
|
+
rubygems_version: 2.6.8
|
185
241
|
signing_key:
|
186
242
|
specification_version: 4
|
187
243
|
summary: Rails form builder that makes it easy to style forms using Twitter Bootstrap
|