bootstrap_form_extensions 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/bootstrap_form_extensions/arrayed_field.js +1 -1
- data/app/assets/javascripts/bootstrap_form_extensions/duration.js +64 -0
- data/app/assets/javascripts/bootstrap_form_extensions/scheduler.js +1 -1
- data/app/assets/javascripts/bootstrap_form_extensions/select_or_new.js +1 -1
- data/app/assets/javascripts/bootstrap_form_extensions/time_picker.js +1 -1
- data/app/assets/javascripts/bootstrap_form_extensions/timespan.js +2 -2
- data/app/assets/stylesheets/bootstrap_form_extensions/duration.css +12 -0
- data/lib/bootstrap_form_extensions.rb +3 -1
- data/lib/bootstrap_form_extensions/date_time_pickers.rb +3 -2
- data/lib/bootstrap_form_extensions/duration.rb +69 -0
- data/lib/bootstrap_form_extensions/helpers.rb +4 -0
- data/lib/bootstrap_form_extensions/select_or_new.rb +1 -1
- data/lib/bootstrap_form_extensions/submit_bar.rb +1 -1
- data/lib/bootstrap_form_extensions/timespan.rb +6 -2
- data/lib/bootstrap_form_extensions/version.rb +1 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20151119160842_add_duration.rb +7 -0
- data/test/dummy/db/schema.rb +2 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +51 -0
- data/test/dummy/log/test.log +11367 -0
- data/test/duration_test.rb +30 -0
- data/test/javascripts/duration_spec.js +91 -0
- data/test/submit_bar_test.rb +1 -1
- data/test/test_helper.rb +2 -1
- metadata +13 -2
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DurationTest < ActionView::TestCase
|
4
|
+
include BootstrapFormExtensions::Duration
|
5
|
+
|
6
|
+
def setup
|
7
|
+
setup_test_fixture
|
8
|
+
end
|
9
|
+
|
10
|
+
test "duration" do
|
11
|
+
expected = '<div class="form-group duration-group" data-duration="true"><label class="control-label col-sm-2" for="thing_duration_in_seconds2">Duration in seconds2</label><div class="col-sm-10 form-inline"><input class="duration-seconds" data-formatted="1:37:23.476" type="hidden" value="5843.476" name="thing[duration_in_seconds2]" id="thing_duration_in_seconds2" /><input type="number" name="thing[hours]" id="thing_hours" value="1" class="form-control hours" min="0" />:<input type="number" name="thing[minutes]" id="thing_minutes" value="37" class="form-control minutes" min="0" max="59" />:<input type="number" name="thing[seconds]" id="thing_seconds" value="23" class="form-control seconds" min="0" max="59" />.<input type="number" name="thing[milliseconds]" id="thing_milliseconds" value="476" class="form-control milliseconds" min="0" max="999" /></div></div>'
|
12
|
+
assert_equal expected, @builder.duration(:duration_in_seconds2)
|
13
|
+
end
|
14
|
+
|
15
|
+
test "duration_without_bootstrap" do
|
16
|
+
expected = '<div class="duration-group" data-duration="true"><input class="duration-seconds" data-formatted="1:37:23.476" type="hidden" value="5843.476" name="thing[duration_in_seconds2]" id="thing_duration_in_seconds2" /><input type="number" name="thing[hours]" id="thing_hours" value="1" class="hours" min="0" />:<input type="number" name="thing[minutes]" id="thing_minutes" value="37" class="minutes" min="0" max="59" />:<input type="number" name="thing[seconds]" id="thing_seconds" value="23" class="seconds" min="0" max="59" />.<input type="number" name="thing[milliseconds]" id="thing_milliseconds" value="476" class="milliseconds" min="0" max="999" /></div>'
|
17
|
+
assert_equal expected, @builder.duration_without_bootstrap(:duration_in_seconds2)
|
18
|
+
end
|
19
|
+
|
20
|
+
test "duration_without_bootstrap accepts wrapper options, like a bootstrap form's form-group" do
|
21
|
+
@output_buffer = @builder.duration_without_bootstrap :duration_in_seconds2, wrapper: { data: { test: 'accepts' } }
|
22
|
+
assert_select 'div.duration-group[data-test="accepts"]'
|
23
|
+
end
|
24
|
+
|
25
|
+
test "duration_without_bootstrap accepts wrapper_class, like a bootstrap form's form-group" do
|
26
|
+
@output_buffer = @builder.duration_without_bootstrap :duration_in_seconds2, wrapper_class: 'test_class'
|
27
|
+
assert_select 'div.duration-group.test_class'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
describe("Duration", function() {
|
2
|
+
|
3
|
+
describe("Plugin", function() {
|
4
|
+
|
5
|
+
it("should be defined on jQuery object", function() {
|
6
|
+
expect($(document.body).duration).not.toThrow()
|
7
|
+
})
|
8
|
+
|
9
|
+
})
|
10
|
+
|
11
|
+
describe("Run tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode", function() {
|
12
|
+
|
13
|
+
beforeEach(function() {
|
14
|
+
$.fn.bootstrapDuration = $.fn.duration.noConflict()
|
15
|
+
})
|
16
|
+
|
17
|
+
afterEach(function() {
|
18
|
+
$.fn.duration = $.fn.bootstrapDuration
|
19
|
+
delete $.fn.bootstrapDuration
|
20
|
+
})
|
21
|
+
|
22
|
+
describe("initialization", function() {
|
23
|
+
|
24
|
+
it("should provide no conflict - duration was set back to undefined (orig value)", function() {
|
25
|
+
expect($.fn.duration).toBeUndefined()
|
26
|
+
})
|
27
|
+
|
28
|
+
it("should return jquery collection containing the element", function() {
|
29
|
+
var $el = $('<div/>')
|
30
|
+
var $duration = $el.bootstrapDuration()
|
31
|
+
expect($duration).toEqual(jasmine.any($))
|
32
|
+
expect($duration[0]).toBe($el[0])
|
33
|
+
})
|
34
|
+
|
35
|
+
})
|
36
|
+
|
37
|
+
describe("behaviour", function() {
|
38
|
+
|
39
|
+
var $element
|
40
|
+
var fixture = function() {
|
41
|
+
return '<div class="duration-group" data-duration="true">'
|
42
|
+
+ ' <input class="duration-seconds" id="thing_duration_in_seconds2" name="thing[duration_in_seconds2]" type="hidden" value="0">'
|
43
|
+
+ ' <input class="hours" id="thing_hours" min="0" name="thing[hours]" type="number" value="0">:'
|
44
|
+
+ ' <input class="minutes" id="thing_minutes" max="59" min="0" name="thing[minutes]" type="number" value="0">:'
|
45
|
+
+ ' <input class="seconds" id="thing_seconds" max="59" min="0" name="thing[seconds]" type="number" value="0">.'
|
46
|
+
+ ' <input class="milliseconds" id="thing_milliseconds" max="999" min="0" name="thing[milliseconds]" type="number" value="0">'
|
47
|
+
+ '</div>'
|
48
|
+
}
|
49
|
+
|
50
|
+
beforeEach(function() {
|
51
|
+
$element = $(fixture())
|
52
|
+
$element.bootstrapDuration()
|
53
|
+
})
|
54
|
+
|
55
|
+
it("should update the value in seconds when the hours change", function() {
|
56
|
+
var $unit = $element.find('input.hours')
|
57
|
+
var $value = $element.find('input.duration-seconds')
|
58
|
+
|
59
|
+
$unit.val(1).trigger('change')
|
60
|
+
expect($value.val()).toBe('3600')
|
61
|
+
})
|
62
|
+
|
63
|
+
it("should update the value in seconds when the minutes change", function() {
|
64
|
+
var $unit = $element.find('input.minutes')
|
65
|
+
var $value = $element.find('input.duration-seconds')
|
66
|
+
|
67
|
+
$unit.val(1).trigger('change')
|
68
|
+
expect($value.val()).toBe('60')
|
69
|
+
})
|
70
|
+
|
71
|
+
it("should update the value in seconds when the seconds change", function() {
|
72
|
+
var $unit = $element.find('input.seconds')
|
73
|
+
var $value = $element.find('input.duration-seconds')
|
74
|
+
|
75
|
+
$unit.val(1).trigger('change')
|
76
|
+
expect($value.val()).toBe('1')
|
77
|
+
})
|
78
|
+
|
79
|
+
it("should update the value in seconds when the milliseconds change", function() {
|
80
|
+
var $unit = $element.find('input.milliseconds')
|
81
|
+
var $value = $element.find('input.duration-seconds')
|
82
|
+
|
83
|
+
$unit.val(1).trigger('change')
|
84
|
+
expect($value.val()).toBe('0.001')
|
85
|
+
})
|
86
|
+
|
87
|
+
})
|
88
|
+
|
89
|
+
})
|
90
|
+
|
91
|
+
})
|
data/test/submit_bar_test.rb
CHANGED
@@ -9,7 +9,7 @@ class SubmitBarTest < ActionView::TestCase
|
|
9
9
|
|
10
10
|
test "SubmitBar with default values" do
|
11
11
|
expected = <<-HTML
|
12
|
-
<div class="form-group">
|
12
|
+
<div class="form-group col-sm-12">
|
13
13
|
<div class='pull-left submitbar-left'>
|
14
14
|
<div class="btn-group dropup submitbar-submit-group">
|
15
15
|
<button type="submit" class="btn btn-primary submitbar-save">Save</button>
|
data/test/test_helper.rb
CHANGED
@@ -30,7 +30,8 @@ def setup_test_fixture
|
|
30
30
|
list: [ 'One', 'Two' ],
|
31
31
|
variables: [ { name: 'var1', value: 1 }, { name: 'var2', value: 2 } ],
|
32
32
|
schedule: [[false],[false],[false],[false],[false],[false],[false]],
|
33
|
-
start_at: Time.new(1971, 10, 21, 11, 30, 0, '+04:00')
|
33
|
+
start_at: Time.new(1971, 10, 21, 11, 30, 0, '+04:00'),
|
34
|
+
duration_in_seconds2: 5843.476
|
34
35
|
@builder = BootstrapForm::FormBuilder.new :thing, @thing, self, layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10"
|
35
36
|
@template = @builder.instance_variable_get :@template
|
36
37
|
@template.stubs(:controller_name).returns('things')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_form_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesús Dugarte
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootstrap_form
|
@@ -104,6 +104,7 @@ files:
|
|
104
104
|
- Rakefile
|
105
105
|
- app/assets/javascripts/bootstrap_form_extensions/arrayed_field.js
|
106
106
|
- app/assets/javascripts/bootstrap_form_extensions/bootstrap-timepicker.min.js
|
107
|
+
- app/assets/javascripts/bootstrap_form_extensions/duration.js
|
107
108
|
- app/assets/javascripts/bootstrap_form_extensions/index.js
|
108
109
|
- app/assets/javascripts/bootstrap_form_extensions/jquery.html5data.min.js
|
109
110
|
- app/assets/javascripts/bootstrap_form_extensions/scheduler.js
|
@@ -112,6 +113,7 @@ files:
|
|
112
113
|
- app/assets/javascripts/bootstrap_form_extensions/timespan.js
|
113
114
|
- app/assets/stylesheets/bootstrap_form_extensions/bootstrap-timepicker.min.css
|
114
115
|
- app/assets/stylesheets/bootstrap_form_extensions/common.css
|
116
|
+
- app/assets/stylesheets/bootstrap_form_extensions/duration.css
|
115
117
|
- app/assets/stylesheets/bootstrap_form_extensions/index.css
|
116
118
|
- app/assets/stylesheets/bootstrap_form_extensions/scheduler.css
|
117
119
|
- app/assets/stylesheets/bootstrap_form_extensions/select_or_new.css
|
@@ -120,6 +122,7 @@ files:
|
|
120
122
|
- lib/bootstrap_form_extensions.rb
|
121
123
|
- lib/bootstrap_form_extensions/arrayed_field.rb
|
122
124
|
- lib/bootstrap_form_extensions/date_time_pickers.rb
|
125
|
+
- lib/bootstrap_form_extensions/duration.rb
|
123
126
|
- lib/bootstrap_form_extensions/helpers.rb
|
124
127
|
- lib/bootstrap_form_extensions/scheduler.rb
|
125
128
|
- lib/bootstrap_form_extensions/select_or_new.rb
|
@@ -162,6 +165,7 @@ files:
|
|
162
165
|
- test/dummy/config/locales/en.yml
|
163
166
|
- test/dummy/config/routes.rb
|
164
167
|
- test/dummy/config/secrets.yml
|
168
|
+
- test/dummy/db/development.sqlite3
|
165
169
|
- test/dummy/db/migrate/20150918185031_create_things.rb
|
166
170
|
- test/dummy/db/migrate/20150924203053_add_timespan.rb
|
167
171
|
- test/dummy/db/migrate/20150929213249_add_arrayed_field.rb
|
@@ -170,6 +174,7 @@ files:
|
|
170
174
|
- test/dummy/db/migrate/20151007213131_add_scheduler_field.rb
|
171
175
|
- test/dummy/db/migrate/20151030194330_add_date_time.rb
|
172
176
|
- test/dummy/db/migrate/20151106165522_add_category.rb
|
177
|
+
- test/dummy/db/migrate/20151119160842_add_duration.rb
|
173
178
|
- test/dummy/db/schema.rb
|
174
179
|
- test/dummy/db/test.sqlite3
|
175
180
|
- test/dummy/log/development.log
|
@@ -179,7 +184,9 @@ files:
|
|
179
184
|
- test/dummy/public/500.html
|
180
185
|
- test/dummy/public/favicon.ico
|
181
186
|
- test/dummy/test/fixtures/things.yml
|
187
|
+
- test/duration_test.rb
|
182
188
|
- test/javascripts/arrayed_field_spec.js
|
189
|
+
- test/javascripts/duration_spec.js
|
183
190
|
- test/javascripts/helpers/function_bind_polyfill_for_phantomjs.js
|
184
191
|
- test/javascripts/helpers/jasmine-jquery.js
|
185
192
|
- test/javascripts/scheduler_spec.js
|
@@ -254,6 +261,7 @@ test_files:
|
|
254
261
|
- test/dummy/config/routes.rb
|
255
262
|
- test/dummy/config/secrets.yml
|
256
263
|
- test/dummy/config.ru
|
264
|
+
- test/dummy/db/development.sqlite3
|
257
265
|
- test/dummy/db/migrate/20150918185031_create_things.rb
|
258
266
|
- test/dummy/db/migrate/20150924203053_add_timespan.rb
|
259
267
|
- test/dummy/db/migrate/20150929213249_add_arrayed_field.rb
|
@@ -262,6 +270,7 @@ test_files:
|
|
262
270
|
- test/dummy/db/migrate/20151007213131_add_scheduler_field.rb
|
263
271
|
- test/dummy/db/migrate/20151030194330_add_date_time.rb
|
264
272
|
- test/dummy/db/migrate/20151106165522_add_category.rb
|
273
|
+
- test/dummy/db/migrate/20151119160842_add_duration.rb
|
265
274
|
- test/dummy/db/schema.rb
|
266
275
|
- test/dummy/db/test.sqlite3
|
267
276
|
- test/dummy/log/development.log
|
@@ -273,7 +282,9 @@ test_files:
|
|
273
282
|
- test/dummy/Rakefile
|
274
283
|
- test/dummy/README.rdoc
|
275
284
|
- test/dummy/test/fixtures/things.yml
|
285
|
+
- test/duration_test.rb
|
276
286
|
- test/javascripts/arrayed_field_spec.js
|
287
|
+
- test/javascripts/duration_spec.js
|
277
288
|
- test/javascripts/helpers/function_bind_polyfill_for_phantomjs.js
|
278
289
|
- test/javascripts/helpers/jasmine-jquery.js
|
279
290
|
- test/javascripts/scheduler_spec.js
|