capybara-bootstrap-datepicker 0.1.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ad6a4e68b261a623cada611f520411eb2da99190
4
- data.tar.gz: 60f005cd8463642cc3508a9317bca8e0a1e465d8
2
+ SHA256:
3
+ metadata.gz: 14e0604064a5deb07db70bf98d0ae7c3e888836763259901970dcc52165f190f
4
+ data.tar.gz: 05fdcca8baf0ac96047f9e9025594ef32d1a815db90dec1b480a7645527bcf63
5
5
  SHA512:
6
- metadata.gz: 4f5a3bc5abd628e69cd6a79039b19d8eeeaed5712064e2727c89c4db3fdaba4836c76c4fbc76f04f85ba4db95486e28b1bdc93d620de470de586e5f1c6093a16
7
- data.tar.gz: 9dc804b52ce10b105b05258c4b5a55c5dd6d4025f1cb2c556b4d7ad515dd9441689f7cb5bcb7d2724645d1a2e8a02fe3555c907b4c9238eced0c768a6a88d36b
6
+ metadata.gz: c0023d6b004c02659825a7fcd3e146761d2b62e1888b0f65cc2fa4600753c15118e0341f87f05b8d847f4fd52e3faf6db5555b859106ea459535f55609dc9359
7
+ data.tar.gz: 8c4d2500a7dedc7b6eb95b1538b1ff3bde90ace64ec7406f8e116dc3d756967eb89c21f23f1c2609bee8d73137ce6cbcca7c2404fa393e96ed50445989350368
data/.gitignore CHANGED
@@ -15,4 +15,5 @@ capybara-*.html
15
15
  **.orig
16
16
  rerun.txt
17
17
  pickle-email-*.html
18
- /Gemfile.lock
18
+ /.yardoc
19
+ /doc
@@ -0,0 +1 @@
1
+ 2.5.7
@@ -1,7 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.2.2"
4
- - "2.0.0"
3
+ - "2.6.5"
4
+ - "2.5.7"
5
+ before_install:
6
+ - gem install bundler
5
7
  script: bundle exec rspec spec
6
8
  addons:
7
9
  code_climate:
data/Gemfile CHANGED
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in capybara-bootstrap-datepicker.gemspec
4
6
  gemspec
5
7
 
6
- gem 'codeclimate-test-reporter', group: :test, require: nil
8
+ gem 'nokogiri', '>= 1.6.7.2'
9
+ gem 'rack', '>= 1.6.11'
@@ -0,0 +1,73 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ capybara-bootstrap-datepicker (0.2.2)
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.2.3)
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,7 +1,5 @@
1
- [![Gem Version](https://badge.fury.io/rb/capybara-bootstrap-datepicker.png)](http://badge.fury.io/rb/capybara-bootstrap-datepicker)
1
+ [![Gem Version](https://badge.fury.io/rb/capybara-bootstrap-datepicker.svg)](http://badge.fury.io/rb/capybara-bootstrap-datepicker)
2
2
  [![Travis CI](https://travis-ci.org/akarzim/capybara-bootstrap-datepicker.svg?branch=master)](https://travis-ci.org/akarzim/capybara-bootstrap-datepicker.svg?branch=master)
3
- [![Code Climate](https://codeclimate.com/github/akarzim/capybara-bootstrap-datepicker/badges/gpa.svg)](https://codeclimate.com/github/akarzim/capybara-bootstrap-datepicker)
4
- [![Test Coverage](https://codeclimate.com/github/akarzim/capybara-bootstrap-datepicker/badges/coverage.svg)](https://codeclimate.com/github/akarzim/capybara-bootstrap-datepicker/coverage)
5
3
 
6
4
  # Capybara::BootstrapDatepicker
7
5
 
@@ -13,14 +11,18 @@ All this gem does is something very simple : allow you to trigger Bootstrap date
13
11
 
14
12
  Add this line to your application's Gemfile:
15
13
 
16
- gem 'capybara-bootstrap-datepicker', group: :test
14
+ ```ruby
15
+ gem 'capybara-bootstrap-datepicker', group: :test
16
+ ```
17
17
 
18
18
  Or, add it into your test group
19
19
 
20
- group :test do
21
- gem 'capybara-bootstrap-datepicker'
22
- ...
23
- end
20
+ ```ruby
21
+ group :test do
22
+ gem 'capybara-bootstrap-datepicker'
23
+ ...
24
+ end
25
+ ```
24
26
 
25
27
  And then execute:
26
28
 
@@ -36,13 +38,17 @@ The gem automatically hook itself into rspec helper using Rspec.configure.
36
38
 
37
39
  Just use this method inside your capybara test:
38
40
 
39
- select_date(2.weeks.ago, from: "Label of the date input")
41
+ ```ruby
42
+ select_date(2.weeks.ago, from: "Label of the date input")
43
+ ```
40
44
 
41
45
  Or even:
42
46
 
43
- select_date(2.weeks.ago, from: "Date", match: :prefer_exact)
44
- select_date(Date.tomorrow, from: "Label of the date input", format: "%d/%m/%Y")
45
- select_date("2013-05-24", xpath: "//path_to//your_date_input", datepicker: :bootstrap)
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
+ ```
46
52
 
47
53
  Available options are:
48
54
  + **from:** the label of your date input
@@ -1,28 +1,31 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
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@gmail.com']
11
- gem.summary = %q{Bootstrap datepicker helper for Capybara}
12
- gem.description = %q{Helper for triggering date input for bootstrap-datepicker javascript library}
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'
13
16
  gem.homepage = 'https://github.com/akarzim/capybara-bootstrap-datepicker'
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.required_ruby_version = '>= 2.0.0'
24
+ gem.required_ruby_version = '>= 2.5.7'
22
25
 
23
- gem.add_development_dependency 'capybara', '~> 2.4', '>= 2.4.4'
24
- gem.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.0'
25
- gem.add_development_dependency 'capybara-screenshot', '~> 1.0', '>= 1.0.9'
26
- gem.add_development_dependency 'phantomjs', '~> 1.9', '>= 1.9.7.1'
27
- gem.add_development_dependency 'poltergeist', '~> 1.5', '>= 1.5.1'
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'
28
31
  end
@@ -1,30 +1,43 @@
1
1
  require 'capybara-bootstrap-datepicker/version'
2
2
 
3
3
  module Capybara
4
+ # Adds datepicker interaction facilities to {Capybara}
4
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
5
13
  def select_date(value, datepicker: :bootstrap, format: nil, from: nil, xpath: nil, **args)
6
14
  fail "Must pass a hash containing 'from' or 'xpath'" if from.nil? && xpath.nil?
7
15
 
8
- value = Date.parse(value) unless value.respond_to? :to_date
9
-
16
+ value = value.respond_to?(:to_date) ? value.to_date : Date.parse(value)
10
17
  date_input = xpath ? find(:xpath, xpath, **args) : find_field(from, **args)
11
18
 
12
19
  case datepicker
13
20
  when :bootstrap
14
21
  select_bootstrap_date date_input, value
15
22
  else
16
- select_simple_date date_input, value
23
+ select_simple_date date_input, value, format
17
24
  end
18
25
 
19
26
  first(:xpath, '//body').click
20
27
  end
21
28
 
22
- def select_simple_date(date_input, value)
23
- value = value.strftime format if format.present?
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?
24
35
 
25
36
  date_input.set "#{value}\e"
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
43
 
@@ -34,37 +47,52 @@ module Capybara
34
47
  picker.navigate_through_decades value.year
35
48
 
36
49
  picker.find_year(value.year).click
37
- picker.find_month(value.strftime('%b')).click
50
+ picker.find_month(value.month).click
38
51
  picker.find_day(value.day).click
39
52
 
40
53
  fail if Date.parse(date_input.value) != value
41
54
  end
42
55
 
43
56
  private
57
+
58
+ # The Picker class interacts with the datepicker
44
59
  class Picker
60
+ # Initializes the picker
45
61
  def initialize
46
62
  @element = find_picker
47
63
  end
48
64
 
65
+ # Reveals the decade panel
49
66
  def goto_decade_panel
50
67
  current_month.click if days.visible?
51
68
  current_year.click if months.visible?
52
69
  end
53
70
 
71
+ # Navigates through the decade panels until the correct one
72
+ # @param value [Fixnum] the year of the desired date
54
73
  def navigate_through_decades(value)
55
74
  decade_start, decade_end = current_decade_minmax
56
75
  goto_prev_decade(value, decade_start) if value < decade_start
57
76
  goto_next_decade(decade_end, value) if value > decade_end
58
77
  end
59
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
60
82
  def find_year(value)
61
83
  years.find '.year', text: value
62
84
  end
63
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
64
89
  def find_month(value)
65
- months.find '.month', text: value
90
+ months.find ".month:nth-child(#{value})"
66
91
  end
67
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
68
96
  def find_day(value)
69
97
  day_xpath = <<-eos
70
98
  .//*[contains(concat(' ', @class, ' '), ' day ')
@@ -76,63 +104,102 @@ module Capybara
76
104
  end
77
105
 
78
106
  private
107
+
108
+ # Get the datepicker
109
+ # @return the DOM element of the datepicker
79
110
  def find_picker
80
111
  Capybara.find(:xpath, '//body').find('.datepicker')
81
112
  end
82
113
 
114
+ # Get the datepicker panel
115
+ # @param period [:years, :months, :days] the panel's period
116
+ # @return the DOM element of the panel
83
117
  def find_period(period)
84
118
  @element.find(".datepicker-#{period}", visible: false)
85
119
  end
86
120
 
121
+ # Get the up level panel
122
+ # @param (see #find_period)
123
+ # @return the DOM element of the switch panel button
87
124
  def find_switch(period)
88
125
  send(period).find('th.datepicker-switch', visible: false)
89
126
  end
90
127
 
128
+ # Get the years panel
129
+ # @param (see #find_period)
130
+ # @return (see #find_period)
91
131
  def years
92
132
  find_period :years
93
133
  end
94
134
 
135
+ # Get the months panel
136
+ # @param (see #find_period)
137
+ # @return (see #find_period)
95
138
  def months
96
139
  find_period :months
97
140
  end
98
141
 
142
+ # Get the days panel
143
+ # @param (see #find_period)
144
+ # @return (see #find_period)
99
145
  def days
100
146
  find_period :days
101
147
  end
102
148
 
149
+ # Get the current decade panel
150
+ # @param (see #find_switch)
151
+ # @return (see #find_switch)
103
152
  def current_decade
104
153
  find_switch :years
105
154
  end
106
155
 
156
+ # Get the current year panel
157
+ # @param (see #find_switch)
158
+ # @return (see #find_switch)
107
159
  def current_year
108
160
  find_switch :months
109
161
  end
110
162
 
163
+ # Get the current month panel
164
+ # @param (see #find_switch)
165
+ # @return (see #find_switch)
111
166
  def current_month
112
167
  find_switch :days
113
168
  end
114
169
 
170
+ # Get the current decade period
171
+ # @return [Array<Fixnum, Fixnum>] the min and max years of the decade
115
172
  def current_decade_minmax
116
173
  current_decade.text.split('-').map(&:to_i)
117
174
  end
118
175
 
176
+ # Click and display previous decade
119
177
  def click_prev_decade
120
178
  years.find('th.prev').click
121
179
  end
122
180
 
181
+ # Click and display next decade
123
182
  def click_next_decade
124
183
  years.find('th.next').click
125
184
  end
126
185
 
186
+ # Calculates the distance in decades between min and max
187
+ # @return [Fixnum] the distance in decades between min and max
127
188
  def gap(min, max)
128
189
  return 0 if min >= max
129
- max/10 - min/10
190
+ (max - min) / 10
130
191
  end
131
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
132
196
  def goto_prev_decade(value, decade_start)
133
197
  gap(value, decade_start).times { click_prev_decade }
134
198
  end
135
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
136
203
  def goto_next_decade(decade_end, value)
137
204
  gap(decade_end, value).times { click_next_decade }
138
205
  end
@@ -0,0 +1,5 @@
1
+ require 'capybara-bootstrap-datepicker'
2
+
3
+ RSpec.configure do |c|
4
+ c.include Capybara::BootstrapDatepicker
5
+ end
@@ -1,5 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The gem's version
1
4
  module Capybara
2
5
  module BootstrapDatepicker
3
- VERSION = "0.1.0"
6
+ # the current version of the gem
7
+ VERSION = '0.2.2'
4
8
  end
5
9
  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&nbsp;
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&nbsp;
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
- # encoding: utf-8
2
- RSpec.describe 'Bootstrap Datepicker', type: :feature do
3
- it '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
2
+
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
6
36
 
7
- select_date Date.today, from: 'Label of my date input', datepicker: :bootstrap
8
- expect(Date.parse find_field('Label of my date input').value).to eq Date.today
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
@@ -1,7 +1,4 @@
1
1
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
2
- require 'codeclimate-test-reporter'
3
- CodeClimate::TestReporter.start
4
-
5
2
  require 'bundler/setup'
6
3
  Bundler.setup
7
4
 
@@ -14,7 +11,7 @@ require 'phantomjs/poltergeist'
14
11
 
15
12
  Capybara.configure do |config|
16
13
  config.javascript_driver = :poltergeist
17
- config.app_host = File.join(File.dirname(__FILE__), 'features')
14
+ config.app_host = "file://#{File.expand_path('features', __dir__)}"
18
15
  end
19
16
 
20
17
  Capybara.register_driver :poltergeist do |app|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-bootstrap-datepicker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
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: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2020-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -16,128 +16,131 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
19
+ version: '3.29'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.4.4
22
+ version: 3.29.0
23
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: '2.4'
29
+ version: '3.29'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.4.4
32
+ version: 3.29.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: rspec
34
+ name: capybara-screenshot
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.1'
39
+ version: '1.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.1.0
42
+ version: 1.0.22
43
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: '3.1'
49
+ version: '1.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.1.0
52
+ version: 1.0.22
53
53
  - !ruby/object:Gem::Dependency
54
- name: capybara-screenshot
54
+ name: phantomjs
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '1.0'
59
+ version: '2.1'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 1.0.9
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.0'
69
+ version: '2.1'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 1.0.9
72
+ version: 2.1.1.0
73
73
  - !ruby/object:Gem::Dependency
74
- name: phantomjs
74
+ name: poltergeist
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '1.9'
79
+ version: '1.18'
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.9.7.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.9'
89
+ version: '1.18'
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 1.9.7.1
92
+ version: 1.18.1
93
93
  - !ruby/object:Gem::Dependency
94
- name: poltergeist
94
+ name: rspec
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '1.5'
99
+ version: '3.9'
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 1.5.1
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: '1.5'
109
+ version: '3.9'
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 1.5.1
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@gmail.com
116
+ - akarzim@pm.me
117
117
  executables: []
118
118
  extensions: []
119
119
  extra_rdoc_files: []
120
120
  files:
121
- - ".codeclimate.yml"
122
121
  - ".gitignore"
123
122
  - ".rspec"
123
+ - ".ruby-version"
124
124
  - ".travis.yml"
125
125
  - Gemfile
126
+ - Gemfile.lock
126
127
  - LICENSE.txt
127
128
  - README.md
128
129
  - Rakefile
129
130
  - capybara-bootstrap-datepicker.gemspec
130
131
  - lib/capybara-bootstrap-datepicker.rb
132
+ - lib/capybara-bootstrap-datepicker/rspec.rb
131
133
  - lib/capybara-bootstrap-datepicker/version.rb
132
134
  - lib/capybara/bootstrap-datepicker.rb
133
- - spec/features/bootstrap.html
135
+ - spec/features/bootstrap-3.4.html
136
+ - spec/features/bootstrap-4.4.html
134
137
  - spec/features/bootstrap_datepicker_spec.rb
135
138
  - spec/spec_helper.rb
136
139
  homepage: https://github.com/akarzim/capybara-bootstrap-datepicker
137
140
  licenses:
138
141
  - MIT
139
142
  metadata: {}
140
- post_install_message:
143
+ post_install_message:
141
144
  rdoc_options: []
142
145
  require_paths:
143
146
  - lib
@@ -145,19 +148,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
148
  requirements:
146
149
  - - ">="
147
150
  - !ruby/object:Gem::Version
148
- version: 2.0.0
151
+ version: 2.5.7
149
152
  required_rubygems_version: !ruby/object:Gem::Requirement
150
153
  requirements:
151
154
  - - ">="
152
155
  - !ruby/object:Gem::Version
153
156
  version: '0'
154
157
  requirements: []
155
- rubyforge_project:
156
- rubygems_version: 2.4.5
157
- signing_key:
158
+ rubyforge_project:
159
+ rubygems_version: 2.7.6.2
160
+ signing_key:
158
161
  specification_version: 4
159
162
  summary: Bootstrap datepicker helper for Capybara
160
163
  test_files:
161
- - spec/features/bootstrap.html
164
+ - spec/features/bootstrap-3.4.html
165
+ - spec/features/bootstrap-4.4.html
162
166
  - spec/features/bootstrap_datepicker_spec.rb
163
167
  - spec/spec_helper.rb
@@ -1,4 +0,0 @@
1
- languages:
2
- Ruby: true
3
- JavaScript: true
4
- exclude_paths: []
@@ -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 action=".">
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({ format: 'yyyy-mm-dd' });</script>
24
- </body>
25
- </html>