capybara-bootstrap-datepicker 0.1.2 → 0.2.0

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
2
  SHA256:
3
- metadata.gz: 7b56dc999900061c939c290c810b969e24cbae98165f4b610fa06bd97db66169
4
- data.tar.gz: d6c4132b27a951471ff5348884d80576906af9522252483af49099aa1a7105b2
3
+ metadata.gz: 5f667e76a7f682fe5ba3d584e38715bd15dd1bfdb1c20515bd02cdae1f4b1248
4
+ data.tar.gz: 797f2d4fafcd7944955244943a39e7268827ddaabc1db41b9661c99ec971a1bc
5
5
  SHA512:
6
- metadata.gz: d641f532e7138871e6484c0320d28a6822d661e42deef6b253480c6852b7db08149d489600e5cc79d7feb41b74830942efca15536774cc6716917d0ac9d0c1df
7
- data.tar.gz: 2e4679f207765d8a41ccb972fcb22e538b5457749d26805ce6ccff7a1f4a0d0688bbaa58a8af7c10f7aa153b2ff394af2437cbccdd43b437b8ee9aef88beb21b
6
+ metadata.gz: 147ec294d97d06628c6454f0a36c6f19ef0f8651fdaaca5f8ca0382fd91c9a36fe41bf9aa486205b9029f7c69587cd5c2b476717ec17234f9409c5c788a9ed28
7
+ data.tar.gz: a2daff82ac51ecd7329f9968bc259f8ddc59c95070bf4b4a931ba2e808bedfe57326ca79c7d8cb8a77e0cb35be5385d0b646059711731db714d9fe78d1340fbf
@@ -1 +1 @@
1
- 2.5.3
1
+ 2.5.7
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
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
@@ -1,58 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capybara-bootstrap-datepicker (0.1.1)
4
+ capybara-bootstrap-datepicker (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.5.2)
10
- public_suffix (>= 2.0.2, < 4.0)
11
- capybara (3.11.1)
9
+ addressable (2.7.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
11
+ capybara (3.29.0)
12
12
  addressable
13
13
  mini_mime (>= 0.1.3)
14
14
  nokogiri (~> 1.8)
15
15
  rack (>= 1.6.0)
16
16
  rack-test (>= 0.6.3)
17
- regexp_parser (~> 1.2)
17
+ regexp_parser (~> 1.5)
18
18
  xpath (~> 3.2)
19
- capybara-screenshot (1.0.22)
19
+ capybara-screenshot (1.0.24)
20
20
  capybara (>= 1.0, < 4)
21
21
  launchy
22
22
  cliver (0.3.2)
23
23
  diff-lcs (1.3)
24
24
  launchy (2.4.3)
25
25
  addressable (~> 2.3)
26
- mini_mime (1.0.1)
27
- mini_portile2 (2.3.0)
28
- nokogiri (1.8.5)
29
- mini_portile2 (~> 2.3.0)
26
+ mini_mime (1.0.2)
27
+ mini_portile2 (2.4.0)
28
+ nokogiri (1.10.7)
29
+ mini_portile2 (~> 2.4.0)
30
30
  phantomjs (2.1.1.0)
31
31
  poltergeist (1.18.1)
32
32
  capybara (>= 2.1, < 4)
33
33
  cliver (~> 0.3.1)
34
34
  websocket-driver (>= 0.2.0)
35
- public_suffix (3.0.3)
36
- rack (2.0.6)
35
+ public_suffix (4.0.1)
36
+ rack (2.0.7)
37
37
  rack-test (1.1.0)
38
38
  rack (>= 1.0, < 3)
39
- regexp_parser (1.3.0)
40
- rspec (3.8.0)
41
- rspec-core (~> 3.8.0)
42
- rspec-expectations (~> 3.8.0)
43
- rspec-mocks (~> 3.8.0)
44
- rspec-core (3.8.0)
45
- rspec-support (~> 3.8.0)
46
- rspec-expectations (3.8.2)
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
47
  diff-lcs (>= 1.2.0, < 2.0)
48
- rspec-support (~> 3.8.0)
49
- rspec-mocks (3.8.0)
48
+ rspec-support (~> 3.9.0)
49
+ rspec-mocks (3.9.0)
50
50
  diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.8.0)
52
- rspec-support (3.8.0)
53
- websocket-driver (0.7.0)
51
+ rspec-support (~> 3.9.0)
52
+ rspec-support (3.9.0)
53
+ websocket-driver (0.7.1)
54
54
  websocket-extensions (>= 0.1.0)
55
- websocket-extensions (0.1.3)
55
+ websocket-extensions (0.1.4)
56
56
  xpath (3.2.0)
57
57
  nokogiri (~> 1.8)
58
58
 
@@ -60,14 +60,14 @@ PLATFORMS
60
60
  ruby
61
61
 
62
62
  DEPENDENCIES
63
- capybara (~> 3.11, >= 3.11.1)
63
+ capybara (~> 3.29, >= 3.29.0)
64
64
  capybara-bootstrap-datepicker!
65
65
  capybara-screenshot (~> 1.0, >= 1.0.22)
66
66
  nokogiri (>= 1.6.7.2)
67
67
  phantomjs (~> 2.1, >= 2.1.1.0)
68
68
  poltergeist (~> 1.18, >= 1.18.1)
69
69
  rack (>= 1.6.11)
70
- rspec (~> 3.8, >= 3.8.0)
70
+ rspec (~> 3.9, >= 3.9.0)
71
71
 
72
72
  BUNDLED WITH
73
- 1.16.1
73
+ 2.1.0
@@ -1,6 +1,9 @@
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|
@@ -8,21 +11,21 @@ Gem::Specification.new do |gem|
8
11
  gem.version = Capybara::BootstrapDatepicker::VERSION
9
12
  gem.authors = ['François Vantomme']
10
13
  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}
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.3.8'
24
+ gem.required_ruby_version = '>= 2.5.7'
22
25
 
23
- gem.add_development_dependency 'capybara', '~> 3.11', '>= 3.11.1'
24
- gem.add_development_dependency 'rspec', '~> 3.8', '>= 3.8.0'
26
+ gem.add_development_dependency 'capybara', '~> 3.29', '>= 3.29.0'
25
27
  gem.add_development_dependency 'capybara-screenshot', '~> 1.0', '>= 1.0.22'
26
28
  gem.add_development_dependency 'phantomjs', '~> 2.1', '>= 2.1.1.0'
27
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,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # The gem's version
2
4
  module Capybara
3
5
  module BootstrapDatepicker
4
6
  # the current version of the gem
5
- VERSION = '0.1.2'
7
+ VERSION = '0.2.0'
6
8
  end
7
9
  end
@@ -1,11 +1,11 @@
1
1
  <html>
2
2
  <head>
3
- <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css">
4
- <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/css/bootstrap-datepicker3.min.css">
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
5
  </head>
6
6
  <body>
7
7
  <div class="container">
8
- <h1>Bootstrap3 Datepicker</h1>
8
+ <h1>Bootstrap 3.4 Datepicker</h1>
9
9
 
10
10
  <form action=".">
11
11
  <div class="form-group">
@@ -23,15 +23,29 @@
23
23
  <span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
24
24
  </div>
25
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>
26
40
  </form>
27
41
  </div>
28
- <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
29
- <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
30
- <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/js/bootstrap-datepicker.min.js"></script>
31
- <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/locales/bootstrap-datepicker.ja.min.js"></script>
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>
32
45
  <script type="text/javascript">
33
46
  $('.input-group.default-date').datepicker({ format: 'yyyy-mm-dd' });
34
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' });
35
49
  </script>
36
50
  </body>
37
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,35 +1,71 @@
1
- # encoding: utf-8
2
- RSpec.describe 'Bootstrap Datepicker', type: :feature do
3
- before :each do
4
- Capybara.current_session.driver.visit "#{Capybara.app_host}/bootstrap.html"
5
- end
1
+ # frozen_string_literal: true
6
2
 
7
- it 'loads the page correctly', js: true do
8
- expect(page).to have_content 'Bootstrap3 Datepicker'
9
- end
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
10
11
 
11
- it 'fills in an input without using the datepicker', js: true do
12
- select_date Date.today, from: 'Label of my date input'
13
- expect(Date.parse find_field('Label of my date input').value).to eq Date.today
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
14
26
  end
15
27
 
16
- it 'fills in a standard datepicker', js: true do
17
- select_date Date.today, from: 'Label of my date input', datepicker: :simple
18
- expect(Date.parse find_field('Label of my date input').value).to eq Date.today
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
19
35
  end
20
36
 
21
- it 'fills in a datepicker based on Bootstrap 3.3', js: true do
22
- select_date Date.today, from: 'Label of my date input', datepicker: :bootstrap
23
- 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
24
44
  end
45
+ end
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
25
52
 
26
- it 'fills in a localized datepicker based on Bootstrap 3.3', js: true do
27
- select_date Date.today, from: 'Label of my localized date input', datepicker: :bootstrap
28
- expect(Date.parse find_field('Label of my localized date input').value).to eq Date.today
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'
29
58
  end
30
59
 
31
- it 'fills in an input with DateTime object', js: true do
32
- select_date DateTime.now, from: 'Label of my date input'
33
- expect(Date.parse find_field('Label of my date input').value).to eq Date.today
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'
34
70
  end
35
71
  end
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.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - François Vantomme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2019-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -16,40 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.11'
19
+ version: '3.29'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.11.1
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: '3.11'
29
+ version: '3.29'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.11.1
33
- - !ruby/object:Gem::Dependency
34
- name: rspec
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.8'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 3.8.0
43
- type: :development
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '3.8'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 3.8.0
32
+ version: 3.29.0
53
33
  - !ruby/object:Gem::Dependency
54
34
  name: capybara-screenshot
55
35
  requirement: !ruby/object:Gem::Requirement
@@ -110,6 +90,26 @@ dependencies:
110
90
  - - ">="
111
91
  - !ruby/object:Gem::Version
112
92
  version: 1.18.1
93
+ - !ruby/object:Gem::Dependency
94
+ name: rspec
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '3.9'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 3.9.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.9'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.9.0
113
113
  description: Helper for triggering date input for bootstrap-datepicker javascript
114
114
  library
115
115
  email:
@@ -132,7 +132,8 @@ files:
132
132
  - lib/capybara-bootstrap-datepicker/rspec.rb
133
133
  - lib/capybara-bootstrap-datepicker/version.rb
134
134
  - lib/capybara/bootstrap-datepicker.rb
135
- - spec/features/bootstrap.html
135
+ - spec/features/bootstrap-3.4.html
136
+ - spec/features/bootstrap-4.4.html
136
137
  - spec/features/bootstrap_datepicker_spec.rb
137
138
  - spec/spec_helper.rb
138
139
  homepage: https://github.com/akarzim/capybara-bootstrap-datepicker
@@ -147,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
148
  requirements:
148
149
  - - ">="
149
150
  - !ruby/object:Gem::Version
150
- version: 2.3.8
151
+ version: 2.5.7
151
152
  required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  requirements:
153
154
  - - ">="
@@ -155,11 +156,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
156
  version: '0'
156
157
  requirements: []
157
158
  rubyforge_project:
158
- rubygems_version: 2.7.6
159
+ rubygems_version: 2.7.6.2
159
160
  signing_key:
160
161
  specification_version: 4
161
162
  summary: Bootstrap datepicker helper for Capybara
162
163
  test_files:
163
- - spec/features/bootstrap.html
164
+ - spec/features/bootstrap-3.4.html
165
+ - spec/features/bootstrap-4.4.html
164
166
  - spec/features/bootstrap_datepicker_spec.rb
165
167
  - spec/spec_helper.rb