capybara-bootstrap-datepicker 0.0.9 → 0.2.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.
- checksums.yaml +5 -5
- data/.gitignore +3 -2
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +73 -0
- data/README.md +30 -10
- data/capybara-bootstrap-datepicker.gemspec +17 -12
- data/lib/capybara-bootstrap-datepicker.rb +175 -38
- data/lib/capybara-bootstrap-datepicker/rspec.rb +5 -0
- data/lib/capybara-bootstrap-datepicker/version.rb +5 -1
- data/spec/features/bootstrap-3.4.html +51 -0
- data/spec/features/bootstrap-4.4.html +56 -0
- data/spec/features/bootstrap_datepicker_spec.rb +67 -7
- data/spec/spec_helper.rb +6 -44
- metadata +44 -37
- data/spec/features/bootstrap.html +0 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 474239354a4fa4484007acd25d0e8deeab89d1884b6be95becc964ad84af4c9c
|
|
4
|
+
data.tar.gz: 4a457207ec5c510526b7d61b7aa6ff3c37989dfed871b0e866545f9bce675d0b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1b301917b94b001c16f4e7626ecbf86ae8773cd6d39247bd104f205163c342dc6ca20a5160f46837fdb3b7ea09a1a89b0a2d6c8d223f98acb802d6b7d3c83919
|
|
7
|
+
data.tar.gz: 0e88d4249bf4e5bd17e1aedb2629d0ab4e44699cbc265c537922bbb28c8a6dd0f7e1627918b4ab1eaabdc7f939eca383ce53defdec606b5add6bc0e9d2cd412b
|
data/.gitignore
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*.sassc
|
|
4
4
|
.sass-cache
|
|
5
5
|
capybara-*.html
|
|
6
|
-
.rspec
|
|
7
6
|
/.bundle
|
|
8
7
|
/vendor/bundle
|
|
9
8
|
/log/*
|
|
@@ -11,8 +10,10 @@ capybara-*.html
|
|
|
11
10
|
/db/*.sqlite3
|
|
12
11
|
/public/system/*
|
|
13
12
|
/coverage/
|
|
13
|
+
/screenshot_*
|
|
14
14
|
/spec/tmp/*
|
|
15
15
|
**.orig
|
|
16
16
|
rerun.txt
|
|
17
17
|
pickle-email-*.html
|
|
18
|
-
|
|
18
|
+
/.yardoc
|
|
19
|
+
/doc
|
data/.rspec
ADDED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.5.7
|
data/.travis.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
language: ruby
|
|
2
|
+
rvm:
|
|
3
|
+
- "2.6.5"
|
|
4
|
+
- "2.5.7"
|
|
5
|
+
before_install:
|
|
6
|
+
- gem install bundler
|
|
7
|
+
script: bundle exec rspec spec
|
|
8
|
+
addons:
|
|
9
|
+
code_climate:
|
|
10
|
+
repo_token:
|
|
11
|
+
secure: SFpmOHwZ3HBMqMH0NKq0B6DqoQjeDtsr5V9YCRLM7D6LvkoMhbkFYPoNo4nz6EWQ0Ml9JzP7ORumUPv1ujhCcYV+yLQ5eIL/xg+g+3H0Xu1sx6CuzDY4C7mZJO5s84KoH7yu9pBrlIa+UJwezwrCOm7JWURsPhR94YvmKobyOZHEuAyvUbYb+eqAkYfXrl71dC6hywfdlSOP/OEncPpIDZ6EApfWRhqZYHHHoj9EqXuHasNzmr6c2cqAh++7XDIOlHJ8JUEjeZN9ofTrqN4oq4JkGvIVmUHOe62jaj92z4vi3ZH+4lv0GmM5KlxgwRZKcCts5WivaNTyQzUnInUbWlWcIHnBFQMPj17ggjhixb6O+w3uAKlbLUGDYkKRSc+MWEdURpFIhyNCMtesHA1GS9+aU6yuxgz3REJCu7K3s5XkenvqxWucWweCOhNVRYSHhwhXAFO4Atg8ZdgIvGA7gF50TMfvJvQ0UIUvOmCxpVi2dwXDfwCgeks5ghP4Hyf0qXbnkLn3/4CE6khYPjQhb3tDu5AnouzKC3SedVxg9QDKZZYD0XEr7TTB89/LelqDYOjDy1C7/+aLGIi24zgzE7A02W6G8SikX08Er5tUvRw1Fgohkr7Th6YFisIgYqNCyreUeV2co/dhI7lTGk6GrBDqltYPht78EIbto4PVu9s=
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
capybara-bootstrap-datepicker (0.2.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
addressable (2.7.0)
|
|
10
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
11
|
+
capybara (3.29.0)
|
|
12
|
+
addressable
|
|
13
|
+
mini_mime (>= 0.1.3)
|
|
14
|
+
nokogiri (~> 1.8)
|
|
15
|
+
rack (>= 1.6.0)
|
|
16
|
+
rack-test (>= 0.6.3)
|
|
17
|
+
regexp_parser (~> 1.5)
|
|
18
|
+
xpath (~> 3.2)
|
|
19
|
+
capybara-screenshot (1.0.24)
|
|
20
|
+
capybara (>= 1.0, < 4)
|
|
21
|
+
launchy
|
|
22
|
+
cliver (0.3.2)
|
|
23
|
+
diff-lcs (1.3)
|
|
24
|
+
launchy (2.4.3)
|
|
25
|
+
addressable (~> 2.3)
|
|
26
|
+
mini_mime (1.0.2)
|
|
27
|
+
mini_portile2 (2.4.0)
|
|
28
|
+
nokogiri (1.10.8)
|
|
29
|
+
mini_portile2 (~> 2.4.0)
|
|
30
|
+
phantomjs (2.1.1.0)
|
|
31
|
+
poltergeist (1.18.1)
|
|
32
|
+
capybara (>= 2.1, < 4)
|
|
33
|
+
cliver (~> 0.3.1)
|
|
34
|
+
websocket-driver (>= 0.2.0)
|
|
35
|
+
public_suffix (4.0.1)
|
|
36
|
+
rack (2.0.8)
|
|
37
|
+
rack-test (1.1.0)
|
|
38
|
+
rack (>= 1.0, < 3)
|
|
39
|
+
regexp_parser (1.6.0)
|
|
40
|
+
rspec (3.9.0)
|
|
41
|
+
rspec-core (~> 3.9.0)
|
|
42
|
+
rspec-expectations (~> 3.9.0)
|
|
43
|
+
rspec-mocks (~> 3.9.0)
|
|
44
|
+
rspec-core (3.9.0)
|
|
45
|
+
rspec-support (~> 3.9.0)
|
|
46
|
+
rspec-expectations (3.9.0)
|
|
47
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
48
|
+
rspec-support (~> 3.9.0)
|
|
49
|
+
rspec-mocks (3.9.0)
|
|
50
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
51
|
+
rspec-support (~> 3.9.0)
|
|
52
|
+
rspec-support (3.9.0)
|
|
53
|
+
websocket-driver (0.7.1)
|
|
54
|
+
websocket-extensions (>= 0.1.0)
|
|
55
|
+
websocket-extensions (0.1.5)
|
|
56
|
+
xpath (3.2.0)
|
|
57
|
+
nokogiri (~> 1.8)
|
|
58
|
+
|
|
59
|
+
PLATFORMS
|
|
60
|
+
ruby
|
|
61
|
+
|
|
62
|
+
DEPENDENCIES
|
|
63
|
+
capybara (~> 3.29, >= 3.29.0)
|
|
64
|
+
capybara-bootstrap-datepicker!
|
|
65
|
+
capybara-screenshot (~> 1.0, >= 1.0.22)
|
|
66
|
+
nokogiri (>= 1.6.7.2)
|
|
67
|
+
phantomjs (~> 2.1, >= 2.1.1.0)
|
|
68
|
+
poltergeist (~> 1.18, >= 1.18.1)
|
|
69
|
+
rack (>= 1.6.11)
|
|
70
|
+
rspec (~> 3.9, >= 3.9.0)
|
|
71
|
+
|
|
72
|
+
BUNDLED WITH
|
|
73
|
+
2.1.0
|
data/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
[](http://badge.fury.io/rb/capybara-bootstrap-datepicker)
|
|
2
|
+
[](https://travis-ci.org/akarzim/capybara-bootstrap-datepicker.svg?branch=master)
|
|
2
3
|
|
|
3
4
|
# Capybara::BootstrapDatepicker
|
|
4
5
|
|
|
@@ -10,14 +11,18 @@ All this gem does is something very simple : allow you to trigger Bootstrap date
|
|
|
10
11
|
|
|
11
12
|
Add this line to your application's Gemfile:
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
```ruby
|
|
15
|
+
gem 'capybara-bootstrap-datepicker', group: :test
|
|
16
|
+
```
|
|
14
17
|
|
|
15
18
|
Or, add it into your test group
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
```ruby
|
|
21
|
+
group :test do
|
|
22
|
+
gem 'capybara-bootstrap-datepicker'
|
|
23
|
+
...
|
|
24
|
+
end
|
|
25
|
+
```
|
|
21
26
|
|
|
22
27
|
And then execute:
|
|
23
28
|
|
|
@@ -33,13 +38,17 @@ The gem automatically hook itself into rspec helper using Rspec.configure.
|
|
|
33
38
|
|
|
34
39
|
Just use this method inside your capybara test:
|
|
35
40
|
|
|
36
|
-
|
|
41
|
+
```ruby
|
|
42
|
+
select_date(2.weeks.ago, from: "Label of the date input")
|
|
43
|
+
```
|
|
37
44
|
|
|
38
45
|
Or even:
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
```ruby
|
|
48
|
+
select_date(2.weeks.ago, from: "Date", match: :prefer_exact)
|
|
49
|
+
select_date(Date.tomorrow, from: "Label of the date input", format: "%d/%m/%Y")
|
|
50
|
+
select_date("2013-05-24", xpath: "//path_to//your_date_input", datepicker: :bootstrap)
|
|
51
|
+
```
|
|
43
52
|
|
|
44
53
|
Available options are:
|
|
45
54
|
+ **from:** the label of your date input
|
|
@@ -48,6 +57,17 @@ Available options are:
|
|
|
48
57
|
+ **datepicker:** the way to fill your date input (:bootstrap = by clicking the popover using [bootstrap-datepicker](https://github.com/eternicode/bootstrap-datepicker))
|
|
49
58
|
; by default it just fill the input date.
|
|
50
59
|
|
|
60
|
+
## Test
|
|
61
|
+
|
|
62
|
+
Just run rspec in your terminal:
|
|
63
|
+
|
|
64
|
+
$ rspec
|
|
65
|
+
|
|
66
|
+
## Upgrading from 0.0.x
|
|
67
|
+
|
|
68
|
+
RSpec support has been split into a separate file. You'll need to change
|
|
69
|
+
`spec_helper.rb` to `require 'capybara-bootstrap-datepicker/rspec'`.
|
|
70
|
+
|
|
51
71
|
## Contributing
|
|
52
72
|
|
|
53
73
|
1. Fork it
|
|
@@ -1,26 +1,31 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
|
|
6
|
+
require 'English'
|
|
4
7
|
require 'capybara-bootstrap-datepicker/version'
|
|
5
8
|
|
|
6
9
|
Gem::Specification.new do |gem|
|
|
7
10
|
gem.name = 'capybara-bootstrap-datepicker'
|
|
8
11
|
gem.version = Capybara::BootstrapDatepicker::VERSION
|
|
9
12
|
gem.authors = ['François Vantomme']
|
|
10
|
-
gem.email = ['akarzim@
|
|
11
|
-
gem.
|
|
13
|
+
gem.email = ['akarzim@pm.me']
|
|
14
|
+
gem.summary = 'Bootstrap datepicker helper for Capybara'
|
|
15
|
+
gem.description = 'Helper for triggering date input for bootstrap-datepicker javascript library'
|
|
12
16
|
gem.homepage = 'https://github.com/akarzim/capybara-bootstrap-datepicker'
|
|
13
|
-
gem.summary = gem.description
|
|
14
17
|
gem.license = 'MIT'
|
|
15
18
|
|
|
16
|
-
gem.files = `git ls-files`.split(
|
|
17
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
19
|
+
gem.files = `git ls-files`.split($RS)
|
|
20
|
+
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
18
21
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
19
22
|
gem.require_paths = ['lib']
|
|
20
23
|
|
|
21
|
-
gem.
|
|
22
|
-
|
|
23
|
-
gem.add_development_dependency '
|
|
24
|
-
gem.add_development_dependency '
|
|
25
|
-
gem.add_development_dependency '
|
|
24
|
+
gem.required_ruby_version = '>= 2.5.7'
|
|
25
|
+
|
|
26
|
+
gem.add_development_dependency 'capybara', '~> 3.29', '>= 3.29.0'
|
|
27
|
+
gem.add_development_dependency 'capybara-screenshot', '~> 1.0', '>= 1.0.22'
|
|
28
|
+
gem.add_development_dependency 'phantomjs', '~> 2.1', '>= 2.1.1.0'
|
|
29
|
+
gem.add_development_dependency 'poltergeist', '~> 1.18', '>= 1.18.1'
|
|
30
|
+
gem.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
|
|
26
31
|
end
|
|
@@ -1,71 +1,208 @@
|
|
|
1
1
|
require 'capybara-bootstrap-datepicker/version'
|
|
2
|
-
require 'rspec/core'
|
|
3
2
|
|
|
4
3
|
module Capybara
|
|
4
|
+
# Adds datepicker interaction facilities to {Capybara}
|
|
5
5
|
module BootstrapDatepicker
|
|
6
|
+
# Selects a date by simulating human interaction with the datepicker or filling the input field
|
|
7
|
+
# @param value [#to_date, String] any object that responds to `#to_date` or a parsable date string
|
|
8
|
+
# @param datepicker [:bootstrap, :simple] the datepicker to use (are supported: bootstrap or input field)
|
|
9
|
+
# @param format [String, nil] a valid date format used to format value
|
|
10
|
+
# @param from [String, nil] the path to input field (required if `xpath` is nil)
|
|
11
|
+
# @param xpath [String, nil] the xpath to input field (required if `from` is nil)
|
|
12
|
+
# @param args [Hash] extra args to find the input field
|
|
6
13
|
def select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args)
|
|
7
14
|
fail "Must pass a hash containing 'from' or 'xpath'" if from.nil? && xpath.nil?
|
|
8
15
|
|
|
9
|
-
value =
|
|
10
|
-
|
|
16
|
+
value = value.respond_to?(:to_date) ? value.to_date : Date.parse(value)
|
|
11
17
|
date_input = xpath ? find(:xpath, xpath, **args) : find_field(from, **args)
|
|
12
18
|
|
|
13
19
|
case datepicker
|
|
14
20
|
when :bootstrap
|
|
15
21
|
select_bootstrap_date date_input, value
|
|
16
22
|
else
|
|
17
|
-
select_simple_date date_input, value
|
|
23
|
+
select_simple_date date_input, value, format
|
|
18
24
|
end
|
|
25
|
+
|
|
26
|
+
first(:xpath, '//body').click
|
|
19
27
|
end
|
|
20
28
|
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
# Selects a date by filling the input field
|
|
30
|
+
# @param date_input the input field
|
|
31
|
+
# @param value [Date] the date to set
|
|
32
|
+
# @param format [String, nil] a valid date format used to format value
|
|
33
|
+
def select_simple_date(date_input, value, format = nil)
|
|
34
|
+
value = value.strftime format unless format.nil?
|
|
23
35
|
|
|
24
36
|
date_input.set "#{value}\e"
|
|
25
|
-
first(:xpath, '//body').click
|
|
26
37
|
end
|
|
27
38
|
|
|
39
|
+
# Selects a date by simulating human interaction with the datepicker
|
|
40
|
+
# @param (see #select_simple_date)
|
|
28
41
|
def select_bootstrap_date(date_input, value)
|
|
29
42
|
date_input.click
|
|
30
|
-
picker = find(:xpath, '//body').find('.datepicker')
|
|
31
43
|
|
|
32
|
-
|
|
33
|
-
picker_months = picker.find('.datepicker-months', visible: false)
|
|
34
|
-
picker_days = picker.find('.datepicker-days', visible: false)
|
|
44
|
+
picker = Picker.new
|
|
35
45
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
picker_current_month = picker_days.find('th.datepicker-switch', visible: false)
|
|
46
|
+
picker.goto_decade_panel
|
|
47
|
+
picker.navigate_through_decades value.year
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
picker.find_year(value.year).click
|
|
50
|
+
picker.find_month(value.month).click
|
|
51
|
+
picker.find_day(value.day).click
|
|
52
|
+
|
|
53
|
+
fail if Date.parse(date_input.value) != value
|
|
54
|
+
end
|
|
42
55
|
|
|
43
|
-
|
|
56
|
+
private
|
|
44
57
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
gap.times { picker_years.find('th.next').click }
|
|
58
|
+
# The Picker class interacts with the datepicker
|
|
59
|
+
class Picker
|
|
60
|
+
# Initializes the picker
|
|
61
|
+
def initialize
|
|
62
|
+
@element = find_picker
|
|
51
63
|
end
|
|
52
64
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
and not(contains(concat(' ', @class, ' '), ' new '))
|
|
59
|
-
and normalize-space(text())='#{value.day}']
|
|
60
|
-
eos
|
|
61
|
-
picker_days.find(:xpath, day_xpath).click
|
|
65
|
+
# Reveals the decade panel
|
|
66
|
+
def goto_decade_panel
|
|
67
|
+
current_month.click if days.visible?
|
|
68
|
+
current_year.click if months.visible?
|
|
69
|
+
end
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
#
|
|
71
|
+
# Navigates through the decade panels until the correct one
|
|
72
|
+
# @param value [Fixnum] the year of the desired date
|
|
73
|
+
def navigate_through_decades(value)
|
|
74
|
+
decade_start, decade_end = current_decade_minmax
|
|
75
|
+
goto_prev_decade(value, decade_start) if value < decade_start
|
|
76
|
+
goto_next_decade(decade_end, value) if value > decade_end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Get the year we want to click on
|
|
80
|
+
# @param value [Fixnum] the year of the desired date
|
|
81
|
+
# @return the DOM element to click on
|
|
82
|
+
def find_year(value)
|
|
83
|
+
years.find '.year', text: value
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Get the month we want to click on
|
|
87
|
+
# @param value [Fixnum] the month of the desired date
|
|
88
|
+
# @return the DOM element to click on
|
|
89
|
+
def find_month(value)
|
|
90
|
+
months.find ".month:nth-child(#{value})"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Get the day we want to click on
|
|
94
|
+
# @param value [Fixnum] the day of the desired date
|
|
95
|
+
# @return the DOM element to click on
|
|
96
|
+
def find_day(value)
|
|
97
|
+
day_xpath = <<-eos
|
|
98
|
+
.//*[contains(concat(' ', @class, ' '), ' day ')
|
|
99
|
+
and not(contains(concat(' ', @class, ' '), ' old '))
|
|
100
|
+
and not(contains(concat(' ', @class, ' '), ' new '))
|
|
101
|
+
and normalize-space(text())='#{value}']
|
|
102
|
+
eos
|
|
103
|
+
days.find :xpath, day_xpath
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
private
|
|
107
|
+
|
|
108
|
+
# Get the datepicker
|
|
109
|
+
# @return the DOM element of the datepicker
|
|
110
|
+
def find_picker
|
|
111
|
+
Capybara.find(:xpath, '//body').find('.datepicker')
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Get the datepicker panel
|
|
115
|
+
# @param period [:years, :months, :days] the panel's period
|
|
116
|
+
# @return the DOM element of the panel
|
|
117
|
+
def find_period(period)
|
|
118
|
+
@element.find(".datepicker-#{period}", visible: false)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Get the up level panel
|
|
122
|
+
# @param (see #find_period)
|
|
123
|
+
# @return the DOM element of the switch panel button
|
|
124
|
+
def find_switch(period)
|
|
125
|
+
send(period).find('th.datepicker-switch', visible: false)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Get the years panel
|
|
129
|
+
# @param (see #find_period)
|
|
130
|
+
# @return (see #find_period)
|
|
131
|
+
def years
|
|
132
|
+
find_period :years
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Get the months panel
|
|
136
|
+
# @param (see #find_period)
|
|
137
|
+
# @return (see #find_period)
|
|
138
|
+
def months
|
|
139
|
+
find_period :months
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Get the days panel
|
|
143
|
+
# @param (see #find_period)
|
|
144
|
+
# @return (see #find_period)
|
|
145
|
+
def days
|
|
146
|
+
find_period :days
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Get the current decade panel
|
|
150
|
+
# @param (see #find_switch)
|
|
151
|
+
# @return (see #find_switch)
|
|
152
|
+
def current_decade
|
|
153
|
+
find_switch :years
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Get the current year panel
|
|
157
|
+
# @param (see #find_switch)
|
|
158
|
+
# @return (see #find_switch)
|
|
159
|
+
def current_year
|
|
160
|
+
find_switch :months
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Get the current month panel
|
|
164
|
+
# @param (see #find_switch)
|
|
165
|
+
# @return (see #find_switch)
|
|
166
|
+
def current_month
|
|
167
|
+
find_switch :days
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Get the current decade period
|
|
171
|
+
# @return [Array<Fixnum, Fixnum>] the min and max years of the decade
|
|
172
|
+
def current_decade_minmax
|
|
173
|
+
current_decade.text.split('-').map(&:to_i)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Click and display previous decade
|
|
177
|
+
def click_prev_decade
|
|
178
|
+
years.find('th.prev').click
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Click and display next decade
|
|
182
|
+
def click_next_decade
|
|
183
|
+
years.find('th.next').click
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Calculates the distance in decades between min and max
|
|
187
|
+
# @return [Fixnum] the distance in decades between min and max
|
|
188
|
+
def gap(min, max)
|
|
189
|
+
return 0 if min >= max
|
|
190
|
+
(max - min) / 10
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
# Go backward to the wanted decade
|
|
194
|
+
# @param value [Fixnum] the year of the desired date
|
|
195
|
+
# @param decade_start [Fixnum] the first year of a decade
|
|
196
|
+
def goto_prev_decade(value, decade_start)
|
|
197
|
+
gap(value, decade_start).times { click_prev_decade }
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Go forward to the wanted decade
|
|
201
|
+
# @param decade_end [Fixnum] the last year of a decade
|
|
202
|
+
# @param value [Fixnum] the year of the desired date
|
|
203
|
+
def goto_next_decade(decade_end, value)
|
|
204
|
+
gap(decade_end, value).times { click_next_decade }
|
|
205
|
+
end
|
|
65
206
|
end
|
|
66
207
|
end
|
|
67
208
|
end
|
|
68
|
-
|
|
69
|
-
RSpec.configure do |c|
|
|
70
|
-
c.include Capybara::BootstrapDatepicker
|
|
71
|
-
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
|
|
4
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker3.min.css">
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<div class="container">
|
|
8
|
+
<h1>Bootstrap 3.4 Datepicker</h1>
|
|
9
|
+
|
|
10
|
+
<form action=".">
|
|
11
|
+
<div class="form-group">
|
|
12
|
+
<label for="my-date-input">Label of my date input</label>
|
|
13
|
+
<div class="input-group date default-date">
|
|
14
|
+
<input type="text" class="form-control" id="my-date-input">
|
|
15
|
+
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="form-group">
|
|
20
|
+
<label for="my-localized-date-input">Label of my localized date input</label>
|
|
21
|
+
<div class="input-group date locale-date">
|
|
22
|
+
<input type="text" class="form-control" id="my-localized-date-input">
|
|
23
|
+
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="required form-group" id="cfp_start_date_input">
|
|
28
|
+
<span class="form-label">
|
|
29
|
+
<label for="registration-period-start-datapicker" class="control-label">
|
|
30
|
+
Start date
|
|
31
|
+
<span class="text-warning">
|
|
32
|
+
<abbr title="This field is required">*</abbr>
|
|
33
|
+
</span>
|
|
34
|
+
</label>
|
|
35
|
+
</span>
|
|
36
|
+
<span class="form-wrapper">
|
|
37
|
+
<input id="registration-period-start-datapicker" class="form-control" type="text" name="cfp[start_date]">
|
|
38
|
+
</span>
|
|
39
|
+
</div>
|
|
40
|
+
</form>
|
|
41
|
+
</div>
|
|
42
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
|
43
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
|
|
44
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
|
|
45
|
+
<script type="text/javascript">
|
|
46
|
+
$('.input-group.default-date').datepicker({ format: 'yyyy-mm-dd' });
|
|
47
|
+
$('.input-group.locale-date').datepicker({ format: 'yyyy-mm-dd', language: 'ja' });
|
|
48
|
+
$('#registration-period-start-datapicker').datepicker({ format: 'yyyy-mm-dd', minDate : '2019-03-06', maxDate : '2019-03-12' });
|
|
49
|
+
</script>
|
|
50
|
+
</body>
|
|
51
|
+
</html>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css">
|
|
4
|
+
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker3.min.css">
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<div class="container">
|
|
8
|
+
<h1>Bootstrap 4.4 Datepicker</h1>
|
|
9
|
+
|
|
10
|
+
<form action=".">
|
|
11
|
+
<div class="form-group">
|
|
12
|
+
<label for="my-date-input">Label of my date input</label>
|
|
13
|
+
<div class="input-group date default-date">
|
|
14
|
+
<input type="text" class="form-control" id="my-date-input">
|
|
15
|
+
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="form-group">
|
|
20
|
+
<label for="my-localized-date-input">Label of my localized date input</label>
|
|
21
|
+
<div class="input-group date locale-date">
|
|
22
|
+
<input type="text" class="form-control" id="my-localized-date-input">
|
|
23
|
+
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="required form-group" id="cfp_start_date_input">
|
|
28
|
+
<span class="form-label">
|
|
29
|
+
<label for="registration-period-start-datapicker" class="control-label">
|
|
30
|
+
Start date
|
|
31
|
+
<span class="text-warning">
|
|
32
|
+
<abbr title="This field is required">*</abbr>
|
|
33
|
+
</span>
|
|
34
|
+
</label>
|
|
35
|
+
</span>
|
|
36
|
+
<span class="form-wrapper">
|
|
37
|
+
<input id="registration-period-start-datapicker" class="form-control" type="text" name="cfp[start_date]">
|
|
38
|
+
</span>
|
|
39
|
+
</div>
|
|
40
|
+
</form>
|
|
41
|
+
</div>
|
|
42
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
|
43
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/js/bootstrap.min.js"></script>
|
|
44
|
+
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
|
|
45
|
+
<script type="text/javascript">
|
|
46
|
+
$('.input-group.default-date').datepicker({ format: 'yyyy-mm-dd' });
|
|
47
|
+
$('.input-group.locale-date').datepicker({ format: 'yyyy-mm-dd', language: 'ja' });
|
|
48
|
+
|
|
49
|
+
$('#registration-period-start-datapicker').datepicker({
|
|
50
|
+
format: 'yyyy-mm-dd',
|
|
51
|
+
minDate : '2019-03-06',
|
|
52
|
+
maxDate : '2019-03-12'
|
|
53
|
+
});
|
|
54
|
+
</script>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
|
@@ -1,11 +1,71 @@
|
|
|
1
|
-
#
|
|
2
|
-
feature 'Bootstrap Datepicker' do
|
|
3
|
-
scenario 'fill in datepicker based on Bootstrap 3.3', js: true do
|
|
4
|
-
Capybara.current_session.driver.visit "#{Capybara.app_host}/bootstrap.html"
|
|
5
|
-
expect(page).to have_content 'Bootstrap3 Datepicker'
|
|
1
|
+
# frozen_string_literal: true
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
RSpec.shared_examples 'a datepicker' do
|
|
4
|
+
context 'default date' do
|
|
5
|
+
subject { Date.parse(find_field('Label of my date input').value) }
|
|
6
|
+
|
|
7
|
+
it 'fills in an input without using the datepicker', js: true do
|
|
8
|
+
select_date Date.today, from: 'Label of my date input'
|
|
9
|
+
expect(subject).to eq Date.today
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'fills in a standard datepicker', js: true do
|
|
13
|
+
select_date Date.today, from: 'Label of my date input', datepicker: :simple
|
|
14
|
+
expect(subject).to eq Date.today
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'fills in a datepicker based on Bootstrap', js: true do
|
|
18
|
+
select_date Date.today, from: 'Label of my date input', datepicker: :bootstrap
|
|
19
|
+
expect(subject).to eq Date.today
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'fills in an input with DateTime object', js: true do
|
|
23
|
+
select_date DateTime.now, from: 'Label of my date input'
|
|
24
|
+
expect(subject).to eq Date.today
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context 'locale date' do
|
|
29
|
+
subject { Date.parse(find_field('Label of my localized date input').value) }
|
|
30
|
+
|
|
31
|
+
it 'fills in a localized datepicker based on Bootstrap', js: true do
|
|
32
|
+
select_date Date.today, from: 'Label of my localized date input', datepicker: :bootstrap
|
|
33
|
+
expect(subject).to eq Date.today
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'required date' do
|
|
38
|
+
subject { Date.parse(find_field('Start date').value) }
|
|
39
|
+
|
|
40
|
+
it 'fills in a required datepicker based on Bootstrap', js: true do
|
|
41
|
+
select_date Date.today, from: 'Start date', datepicker: :bootstrap
|
|
42
|
+
expect(subject).to eq Date.today
|
|
43
|
+
end
|
|
9
44
|
end
|
|
10
45
|
end
|
|
11
46
|
|
|
47
|
+
RSpec.describe 'Bootstrap Datepicker', type: :feature do
|
|
48
|
+
describe 'Boostrap 3.4' do
|
|
49
|
+
before :each do
|
|
50
|
+
Capybara.current_session.driver.visit "#{Capybara.app_host}/bootstrap-3.4.html"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'loads the page correctly', js: true do
|
|
54
|
+
expect(page).to have_content 'Bootstrap 3.4 Datepicker'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it_behaves_like 'a datepicker'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'Boostrap 4.4' do
|
|
61
|
+
before :each do
|
|
62
|
+
Capybara.current_session.driver.visit "#{Capybara.app_host}/bootstrap-4.4.html"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'loads the page correctly', js: true do
|
|
66
|
+
expect(page).to have_content 'Bootstrap 4.4 Datepicker'
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it_behaves_like 'a datepicker'
|
|
70
|
+
end
|
|
71
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,36 +1,17 @@
|
|
|
1
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
|
2
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
|
3
|
-
# The generated `.rspec` file contains `--require spec_helper` which will cause this
|
|
4
|
-
# file to always be loaded, without a need to explicitly require it in any files.
|
|
5
|
-
#
|
|
6
|
-
# Given that it is always loaded, you are encouraged to keep this file as
|
|
7
|
-
# light-weight as possible. Requiring heavyweight dependencies from this file
|
|
8
|
-
# will add to the boot time of your test suite on EVERY test run, even for an
|
|
9
|
-
# individual file that may not need all of that loaded. Instead, consider making
|
|
10
|
-
# a separate helper file that requires the additional dependencies and performs
|
|
11
|
-
# the additional setup, and require it from the spec files that actually need it.
|
|
12
|
-
#
|
|
13
|
-
# The `.rspec` file also contains a few flags that are not defaults but that
|
|
14
|
-
# users commonly want.
|
|
15
|
-
#
|
|
16
1
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
17
|
-
|
|
18
2
|
require 'bundler/setup'
|
|
19
3
|
Bundler.setup
|
|
20
4
|
|
|
21
|
-
require 'capybara-bootstrap-datepicker'
|
|
5
|
+
require 'capybara-bootstrap-datepicker/rspec'
|
|
22
6
|
require 'capybara'
|
|
23
7
|
require 'capybara/rspec'
|
|
8
|
+
require 'capybara-screenshot/rspec'
|
|
24
9
|
require 'capybara/poltergeist'
|
|
25
10
|
require 'phantomjs/poltergeist'
|
|
26
|
-
require 'pry'
|
|
27
11
|
|
|
28
12
|
Capybara.configure do |config|
|
|
29
13
|
config.javascript_driver = :poltergeist
|
|
30
|
-
config.app_host = '
|
|
31
|
-
# config.app_host = 'http://localhost:3007'
|
|
32
|
-
# config.server_host = 'localhost'
|
|
33
|
-
# config.server_port = '3007'
|
|
14
|
+
config.app_host = "file://#{File.expand_path('features', __dir__)}"
|
|
34
15
|
end
|
|
35
16
|
|
|
36
17
|
Capybara.register_driver :poltergeist do |app|
|
|
@@ -38,32 +19,14 @@ Capybara.register_driver :poltergeist do |app|
|
|
|
38
19
|
end
|
|
39
20
|
|
|
40
21
|
RSpec.configure do |config|
|
|
41
|
-
# rspec-expectations config goes here. You can use an alternate
|
|
42
|
-
# assertion/expectation library such as wrong or the stdlib/minitest
|
|
43
|
-
# assertions if you prefer.
|
|
44
22
|
config.expect_with :rspec do |expectations|
|
|
45
|
-
# This option will default to `true` in RSpec 4. It makes the `description`
|
|
46
|
-
# and `failure_message` of custom matchers include text for helper methods
|
|
47
|
-
# defined using `chain`, e.g.:
|
|
48
|
-
# be_bigger_than(2).and_smaller_than(4).description
|
|
49
|
-
# # => "be bigger than 2 and smaller than 4"
|
|
50
|
-
# ...rather than:
|
|
51
|
-
# # => "be bigger than 2"
|
|
52
23
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
53
24
|
end
|
|
54
25
|
|
|
55
|
-
# rspec-mocks config goes here. You can use an alternate test double
|
|
56
|
-
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
|
57
26
|
config.mock_with :rspec do |mocks|
|
|
58
|
-
# Prevents you from mocking or stubbing a method that does not exist on
|
|
59
|
-
# a real object. This is generally recommended, and will default to
|
|
60
|
-
# `true` in RSpec 4.
|
|
61
27
|
mocks.verify_partial_doubles = true
|
|
62
28
|
end
|
|
63
29
|
|
|
64
|
-
# The settings below are suggested to provide a good initial experience
|
|
65
|
-
# with RSpec, but feel free to customize to your heart's content.
|
|
66
|
-
=begin
|
|
67
30
|
# These two settings work together to allow you to limit a spec run
|
|
68
31
|
# to individual examples or groups you care about by tagging them with
|
|
69
32
|
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
|
@@ -71,8 +34,8 @@ RSpec.configure do |config|
|
|
|
71
34
|
config.filter_run :focus
|
|
72
35
|
config.run_all_when_everything_filtered = true
|
|
73
36
|
|
|
74
|
-
# Limits the available syntax to the non-monkey patched syntax that is
|
|
75
|
-
# For more details, see:
|
|
37
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
|
38
|
+
# recommended. For more details, see:
|
|
76
39
|
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
|
77
40
|
# - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
|
78
41
|
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
|
@@ -80,7 +43,7 @@ RSpec.configure do |config|
|
|
|
80
43
|
|
|
81
44
|
# This setting enables warnings. It's recommended, but in some cases may
|
|
82
45
|
# be too noisy due to issues in dependencies.
|
|
83
|
-
config.warnings = true
|
|
46
|
+
# config.warnings = true
|
|
84
47
|
|
|
85
48
|
# Many RSpec users commonly either run the entire suite or an individual
|
|
86
49
|
# file, and it's useful to allow more verbose output when running an
|
|
@@ -108,5 +71,4 @@ RSpec.configure do |config|
|
|
|
108
71
|
# test failures related to randomization by passing the same `--seed` value
|
|
109
72
|
# as the one that triggered the failure.
|
|
110
73
|
Kernel.srand config.seed
|
|
111
|
-
=end
|
|
112
74
|
end
|
metadata
CHANGED
|
@@ -1,140 +1,146 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capybara-bootstrap-datepicker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- François Vantomme
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-06-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: capybara
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.
|
|
19
|
+
version: '3.29'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 3.
|
|
23
|
-
type: :
|
|
22
|
+
version: 3.29.0
|
|
23
|
+
type: :development
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
27
|
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '3.
|
|
29
|
+
version: '3.29'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 3.
|
|
32
|
+
version: 3.29.0
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
|
-
name: capybara
|
|
34
|
+
name: capybara-screenshot
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '1.0'
|
|
40
40
|
- - ">="
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
|
-
version:
|
|
43
|
-
type: :
|
|
42
|
+
version: 1.0.22
|
|
43
|
+
type: :development
|
|
44
44
|
prerelease: false
|
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
|
47
47
|
- - "~>"
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '
|
|
49
|
+
version: '1.0'
|
|
50
50
|
- - ">="
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version:
|
|
52
|
+
version: 1.0.22
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: phantomjs
|
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
|
56
56
|
requirements:
|
|
57
57
|
- - "~>"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: '1
|
|
59
|
+
version: '2.1'
|
|
60
60
|
- - ">="
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: 1.
|
|
62
|
+
version: 2.1.1.0
|
|
63
63
|
type: :development
|
|
64
64
|
prerelease: false
|
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
|
67
67
|
- - "~>"
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '1
|
|
69
|
+
version: '2.1'
|
|
70
70
|
- - ">="
|
|
71
71
|
- !ruby/object:Gem::Version
|
|
72
|
-
version: 1.
|
|
72
|
+
version: 2.1.1.0
|
|
73
73
|
- !ruby/object:Gem::Dependency
|
|
74
74
|
name: poltergeist
|
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
|
76
76
|
requirements:
|
|
77
77
|
- - "~>"
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: '1.
|
|
79
|
+
version: '1.18'
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 1.
|
|
82
|
+
version: 1.18.1
|
|
83
83
|
type: :development
|
|
84
84
|
prerelease: false
|
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.
|
|
89
|
+
version: '1.18'
|
|
90
90
|
- - ">="
|
|
91
91
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: 1.
|
|
92
|
+
version: 1.18.1
|
|
93
93
|
- !ruby/object:Gem::Dependency
|
|
94
|
-
name:
|
|
94
|
+
name: rspec
|
|
95
95
|
requirement: !ruby/object:Gem::Requirement
|
|
96
96
|
requirements:
|
|
97
97
|
- - "~>"
|
|
98
98
|
- !ruby/object:Gem::Version
|
|
99
|
-
version: '
|
|
99
|
+
version: '3.9'
|
|
100
100
|
- - ">="
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
|
-
version:
|
|
102
|
+
version: 3.9.0
|
|
103
103
|
type: :development
|
|
104
104
|
prerelease: false
|
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
106
|
requirements:
|
|
107
107
|
- - "~>"
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '
|
|
109
|
+
version: '3.9'
|
|
110
110
|
- - ">="
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
|
-
version:
|
|
112
|
+
version: 3.9.0
|
|
113
113
|
description: Helper for triggering date input for bootstrap-datepicker javascript
|
|
114
114
|
library
|
|
115
115
|
email:
|
|
116
|
-
- akarzim@
|
|
116
|
+
- akarzim@pm.me
|
|
117
117
|
executables: []
|
|
118
118
|
extensions: []
|
|
119
119
|
extra_rdoc_files: []
|
|
120
120
|
files:
|
|
121
121
|
- ".gitignore"
|
|
122
|
+
- ".rspec"
|
|
123
|
+
- ".ruby-version"
|
|
124
|
+
- ".travis.yml"
|
|
122
125
|
- Gemfile
|
|
126
|
+
- Gemfile.lock
|
|
123
127
|
- LICENSE.txt
|
|
124
128
|
- README.md
|
|
125
129
|
- Rakefile
|
|
126
130
|
- capybara-bootstrap-datepicker.gemspec
|
|
127
131
|
- lib/capybara-bootstrap-datepicker.rb
|
|
132
|
+
- lib/capybara-bootstrap-datepicker/rspec.rb
|
|
128
133
|
- lib/capybara-bootstrap-datepicker/version.rb
|
|
129
134
|
- lib/capybara/bootstrap-datepicker.rb
|
|
130
|
-
- spec/features/bootstrap.html
|
|
135
|
+
- spec/features/bootstrap-3.4.html
|
|
136
|
+
- spec/features/bootstrap-4.4.html
|
|
131
137
|
- spec/features/bootstrap_datepicker_spec.rb
|
|
132
138
|
- spec/spec_helper.rb
|
|
133
139
|
homepage: https://github.com/akarzim/capybara-bootstrap-datepicker
|
|
134
140
|
licenses:
|
|
135
141
|
- MIT
|
|
136
142
|
metadata: {}
|
|
137
|
-
post_install_message:
|
|
143
|
+
post_install_message:
|
|
138
144
|
rdoc_options: []
|
|
139
145
|
require_paths:
|
|
140
146
|
- lib
|
|
@@ -142,19 +148,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
142
148
|
requirements:
|
|
143
149
|
- - ">="
|
|
144
150
|
- !ruby/object:Gem::Version
|
|
145
|
-
version:
|
|
151
|
+
version: 2.5.7
|
|
146
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
153
|
requirements:
|
|
148
154
|
- - ">="
|
|
149
155
|
- !ruby/object:Gem::Version
|
|
150
156
|
version: '0'
|
|
151
157
|
requirements: []
|
|
152
|
-
rubyforge_project:
|
|
153
|
-
rubygems_version: 2.
|
|
154
|
-
signing_key:
|
|
158
|
+
rubyforge_project:
|
|
159
|
+
rubygems_version: 2.7.6.2
|
|
160
|
+
signing_key:
|
|
155
161
|
specification_version: 4
|
|
156
|
-
summary:
|
|
162
|
+
summary: Bootstrap datepicker helper for Capybara
|
|
157
163
|
test_files:
|
|
158
|
-
- spec/features/bootstrap.html
|
|
164
|
+
- spec/features/bootstrap-3.4.html
|
|
165
|
+
- spec/features/bootstrap-4.4.html
|
|
159
166
|
- spec/features/bootstrap_datepicker_spec.rb
|
|
160
167
|
- spec/spec_helper.rb
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
|
|
4
|
-
<link rel="stylesheet" href="http://eternicode.github.io/bootstrap-datepicker/bootstrap-datepicker/css/datepicker3.css">
|
|
5
|
-
</head>
|
|
6
|
-
<body>
|
|
7
|
-
<div class="container">
|
|
8
|
-
<h1>Bootstrap3 Datepicker</h1>
|
|
9
|
-
|
|
10
|
-
<form>
|
|
11
|
-
<div class="form-group">
|
|
12
|
-
<label for="my-date-input">Label of my date input</label>
|
|
13
|
-
<div class="input-group date">
|
|
14
|
-
<input type="text" class="form-control" id="my-date-input">
|
|
15
|
-
<span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</form>
|
|
19
|
-
</div>
|
|
20
|
-
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
|
|
21
|
-
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
|
|
22
|
-
<script src="http://eternicode.github.io/bootstrap-datepicker/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
|
|
23
|
-
<script type="text/javascript">$('.input-group.date').datepicker({});</script>
|
|
24
|
-
</body>
|
|
25
|
-
</html>
|