agilibox 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +11 -0
  3. data/app/assets/javascripts/agilibox/modals.coffee +72 -35
  4. data/app/assets/stylesheets/agilibox/modals.sass +15 -7
  5. data/app/filters/agilibox/small_data/filter_strategy_by_date_period.rb +37 -0
  6. data/app/filters/agilibox/small_data/filter_strategy_by_datetime_period.rb +37 -0
  7. data/app/filters/agilibox/small_data/filter_strategy_by_time_period.rb +4 -37
  8. data/app/forms/agilibox/mini_form_object.rb +29 -0
  9. data/lib/agilibox/cucumber_config.rb +13 -4
  10. data/{features/support → lib/agilibox/cucumber_helpers}/agilibox.rb +0 -0
  11. data/{features/support → lib/agilibox/cucumber_helpers}/ajax.rb +0 -0
  12. data/lib/agilibox/cucumber_helpers/capybara.rb +11 -0
  13. data/lib/agilibox/cucumber_helpers/chrome_headless.rb +16 -0
  14. data/{features/support → lib/agilibox/cucumber_helpers}/database_cleaner.rb +0 -0
  15. data/{features/support → lib/agilibox/cucumber_helpers}/factory_bot.rb +0 -0
  16. data/{features/support → lib/agilibox/cucumber_helpers}/fix_referrer.rb +0 -0
  17. data/{features/support → lib/agilibox/cucumber_helpers}/poltergeist.rb +5 -6
  18. data/{features/support → lib/agilibox/cucumber_helpers}/rails.rb +0 -0
  19. data/{features/support → lib/agilibox/cucumber_helpers}/rspec.rb +0 -0
  20. data/{features/support → lib/agilibox/cucumber_helpers}/screenshots.rb +0 -0
  21. data/{features/support → lib/agilibox/cucumber_helpers}/select2.rb +0 -0
  22. data/{features/support → lib/agilibox/cucumber_helpers}/sign_in.rb +0 -0
  23. data/{features/support → lib/agilibox/cucumber_helpers}/simplecov.rb +0 -0
  24. data/{features/support → lib/agilibox/cucumber_helpers}/timecop.rb +0 -0
  25. data/{features/support → lib/agilibox/cucumber_helpers}/turbolinks.rb +0 -0
  26. data/{features/support → lib/agilibox/cucumber_helpers}/zonebie.rb +0 -0
  27. data/lib/agilibox/version.rb +1 -1
  28. metadata +23 -19
  29. data/features/support/env.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e7f0e59fd9a62da85e62c61abc3638382fd2e949
4
- data.tar.gz: d6d180e70886773cbfcd8f43e3d54394fd7e348e
2
+ SHA256:
3
+ metadata.gz: c47b5f9188e74619272d53f2f46dccaba3fbbdb4f36ff862a2fc42964d9272ad
4
+ data.tar.gz: db7e31ea1f12048dc3bee0a6483d74f54b041260372ceb9a43352dceaee3a189
5
5
  SHA512:
6
- metadata.gz: 55fd5e237e565365e5ba3bc1bb1d6ac4478a7bbe8fe1b953437900b91c4a32c350fd38cbcb35971d5ecd81cf1b2deb8f44efff08e6e79ed0a8dde0f886a29683
7
- data.tar.gz: ea0ae8d4e740b142eeb84df062aa6c00cd0c0b4b07dad7cdbdc17d1de12d174feb9d87e54ab29686123238292d571330af927a6e0a060f6a9e62b5782a2f00b0
6
+ metadata.gz: 73b32e94afc159700b611ae0fb1363bcab445f5b12ad6cc89145b8ae4192581fd0977f14e94bb533cb2454b97f6286fbcd572bfdb1d10a0b4400d00f9a7de87d
7
+ data.tar.gz: 15636d5f9372df16d14ddfbbb076b564b25183cce1ffc80e55260e5df3e68e4d33e65d21fa471fdcf3669aa27a3f18960b94f2b029daaaafef2b2f3affe0a6ac
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0
4
+
5
+ - Add `Agilibox::MiniFormObject`
6
+ - Replace time period filter by date+datetime period filters
7
+ - JS Modal improvements
8
+ - Change Cucumber config :
9
+ - add Chrome Headless support
10
+ - rename `phantomjs_window_size` to `window_size`
11
+ - refactoring
12
+ - you now need to add `Agilibox::CucumberConfig.require_poltergeist!` or `Agilibox::CucumberConfig.require_chrome_headless!` to your `env.rb`
13
+
3
14
  ## 1.1.0
4
15
 
5
16
  - Search concern improvements
@@ -4,12 +4,12 @@ window.modal =
4
4
  error: "Error."
5
5
 
6
6
  template: """
7
- <div id='modal' class='closable'>
8
- <div id='modal-overlay'></div>
7
+ <div id="modal" class="closable">
8
+ <div id="modal-overlay"></div>
9
9
 
10
- <button id='modal-close'>×</button>
10
+ <button id="modal-close">&times;</button>
11
11
 
12
- <div id='modal-body'>
12
+ <div id="modal-body">
13
13
  {{content}}
14
14
  </div>
15
15
  </div>
@@ -19,7 +19,7 @@ window.modal =
19
19
  $(modal.template.replace("{{content}}", content))
20
20
 
21
21
  open: (content) ->
22
- if modal.is_opened()
22
+ if modal.isOpened()
23
23
  modal._update(content)
24
24
  else
25
25
  modal._create(content)
@@ -32,34 +32,44 @@ window.modal =
32
32
  _update: (content) ->
33
33
  $("#modal-body").html(content)
34
34
 
35
- close: ->
35
+ close: (event) ->
36
+ event.preventDefault() if event
36
37
  $("body").removeClass("modal-open")
37
38
  $("#modal").remove()
38
39
  $(document).trigger("modal:close")
39
- return false
40
+ return true
40
41
 
41
- is_opened: ->
42
- return $("#modal").length > 0
42
+ isOpened: -> return $("#modal").length > 0
43
43
 
44
- is_closed: ->
45
- return $("#modal").length == 0
44
+ isClosed: -> return $("#modal").length == 0
46
45
 
47
- is_closable: ->
48
- return $("#modal").hasClass("closable")
46
+ isClosable: -> return $("#modal").hasClass("closable")
49
47
 
50
- autoclose: ->
51
- modal.close() if modal.is_closable()
52
- return false
48
+ autoclose: (event) ->
49
+ event.preventDefault() if event
50
+ modal.close() if modal.isClosable()
51
+ return true
53
52
 
54
- set_closable: ->
55
- $("#modal").addClass("closable")
53
+ # Modes : normal, nested, off, unknown
54
+ setModalMode: (mode) ->
55
+ mode = modal.parseModalMode(mode)
56
+ if mode != "unknown"
57
+ try document.querySelector("#modal").dataset.modal = mode
58
+ return true
56
59
 
57
- set_unclosable: ->
58
- $("#modal").removeClass("closable")
60
+ parseModalMode: (mode) ->
61
+ if String(mode) == "1"
62
+ console.log("[data-modal=1] if deprecated, please use [data-modal=nested] or [data-modal=normal]")
63
+ return "nested"
59
64
 
60
- _set_closable_for_element: (element) ->
61
- return modal.set_closable() if $(element).is("[data-modal-closable=1]")
62
- return modal.set_unclosable() if $(element).is("[data-modal-closable=0]")
65
+ if String(mode) == "0"
66
+ console.log("[data-modal=0] if deprecated, please use [data-modal=off]")
67
+ return "off"
68
+
69
+ if mode == "off" || mode == "normal" || mode == "nested"
70
+ return mode
71
+ else
72
+ return "unknown"
63
73
 
64
74
  openUrl: (url, type = "GET", data = {}) ->
65
75
  modal.open(modal.i18n.loading)
@@ -85,33 +95,60 @@ window.modal =
85
95
 
86
96
  error: ->
87
97
  modal.open(modal.i18n.error)
88
- modal.set_closable()
89
98
 
90
99
  _callbacks:
91
- links: ->
100
+ links: (event) ->
101
+ return unless modal.shouldOpenInModalForElement(this)
102
+
103
+ event.preventDefault()
92
104
  modal.openUrl(this.href)
93
- modal._set_closable_for_element(this)
94
- return false
105
+ modal.setModalMode(this.dataset.modal)
106
+
107
+ forms: (event) ->
108
+ return unless modal.shouldOpenInModalForElement(this)
109
+
110
+ event.preventDefault()
95
111
 
96
- forms: ->
97
112
  if String(this.method).toLowerCase() == "get"
98
113
  data = $(this).serialize()
99
114
  else
100
115
  data = new FormData(this)
116
+
101
117
  modal.openUrl(this.action, this.method, data)
102
- modal._set_closable_for_element(this)
103
- return false
118
+ modal.setModalMode(this.dataset.modal)
104
119
 
105
120
  escape: (event) ->
106
121
  modal.autoclose() if event.keyCode == 27
122
+
123
+ shouldOpenInModalForElement: (element) ->
124
+ # ALWAYS ignore
125
+ return false if String(element.href).indexOf("javascript:") == 0
126
+ return false if String(element.href).indexOf("mailto:") == 0
127
+ return false if String(element.href).indexOf("tel:") == 0
128
+ return false if String(element.href).indexOf("sms:") == 0
129
+ return false if String(element.target).indexOf("_") == 0
130
+ return false if String(element.dataset.remote || "") != ""
131
+ return false if String(element.dataset.method || "") != ""
132
+ return false if modal.parseModalMode(element.dataset.modal) == "off"
133
+
134
+ # True if element mode is NORMAL or NESTED
135
+ elementMode = modal.parseModalMode(element.dataset.modal)
136
+ return true if elementMode == "normal" || elementMode == "nested"
137
+
138
+ # True if element is inside a NESTED modal
139
+ if $(element).parents("#modal[data-modal=nested]").length
140
+ return true
141
+
142
+ # Hidden forms created by jquery_ujs for remote links inside a NESTED modal
143
+ if $(element).parent().is("body.modal-open") && $("#modal[data-modal=nested]").length
107
144
  return true
108
145
 
146
+ return false
147
+
109
148
  setup: ->
110
149
  $(document).on("keyup", modal._callbacks.escape)
111
- $(document).on("click", "#modal-overlay, #modal-close", modal.autoclose)
112
- $(document).on("click", "a[data-modal=1], #modal a[href]:not([data-modal=0]):not([data-remote]):not([data-method])", modal._callbacks.links)
113
- $(document).on("submit", "form[data-modal=1], #modal form:not([data-modal=0]):not([data-remote])", modal._callbacks.forms)
114
- # Forms created by jquery_ujs for remote links
115
- $(document).on("submit", "body.modal-open > form", modal._callbacks.forms)
150
+ $(document).on("click", "#modal-overlay, #modal-close, .modal-autoclose", modal.autoclose)
151
+ $(document).on("click", "a", modal._callbacks.links)
152
+ $(document).on("submit", "form", modal._callbacks.forms)
116
153
 
117
154
  modal.setup()
@@ -19,9 +19,10 @@ body.modal-open
19
19
 
20
20
  #modal-body
21
21
  position: relative
22
- margin: 10vh auto
23
- padding: 2rem
22
+ margin: 50px auto
23
+ padding: 20px
24
24
  width: auto
25
+ box-sizing: border-box
25
26
  min-width: 50%
26
27
  max-width: 980px
27
28
  background: white
@@ -32,14 +33,21 @@ body.modal-open
32
33
  overflow: auto
33
34
 
34
35
  #modal-close
36
+ margin: 0
37
+ padding: 0
38
+ display: block
39
+ font-size: 50px
40
+ line-height: 50px
41
+ height: 50px
42
+ width: 50px
43
+ position: fixed
44
+ top: 0px
45
+ right: 0px
35
46
  color: white
36
- position: absolute
37
- font-size: 4rem
38
- line-height: 0.5rem
39
- top: 0.25rem
40
- right: 0.25rem
41
47
  border: none
48
+ outline: none
42
49
  background: none
50
+ text-align: center
43
51
 
44
52
  #modal:not(.closable) #modal-close
45
53
  display: none
@@ -0,0 +1,37 @@
1
+ class Agilibox::SmallData::FilterStrategyByDatePeriod < ::Agilibox::SmallData::FilterStrategyByKeyValue
2
+ def apply(query, value)
3
+ value = value.to_s
4
+
5
+ if value == "today"
6
+ a = Date.current
7
+ b = Date.current
8
+ elsif value == "yesterday"
9
+ a = (Date.current - 1.day)
10
+ b = (Date.current - 1.day)
11
+ elsif value == "this_week"
12
+ a = Date.current.beginning_of_week
13
+ b = Date.current.end_of_week
14
+ elsif value == "this_month"
15
+ a = Date.current.beginning_of_month
16
+ b = Date.current.end_of_month
17
+ elsif value == "this_year"
18
+ a = Date.current.beginning_of_year
19
+ b = Date.current.end_of_year
20
+ elsif value == "last_week"
21
+ a = (Date.current - 1.week).beginning_of_week
22
+ b = (Date.current - 1.week).end_of_week
23
+ elsif value == "last_month"
24
+ a = (Date.current - 1.month).beginning_of_month
25
+ b = (Date.current - 1.month).end_of_month
26
+ elsif value == "last_year"
27
+ a = (Date.current - 1.year).beginning_of_year
28
+ b = (Date.current - 1.year).end_of_year
29
+ else
30
+ return query
31
+ end
32
+
33
+ column = key.is_a?(Symbol) ? "#{query.model.table_name}.#{key}" : key.to_s
34
+
35
+ query.where("#{column} >= ? AND #{column} <= ?", a, b)
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ class Agilibox::SmallData::FilterStrategyByDatetimePeriod < ::Agilibox::SmallData::FilterStrategyByKeyValue
2
+ def apply(query, value)
3
+ value = value.to_s
4
+
5
+ if value == "today"
6
+ a = Time.zone.now.beginning_of_day
7
+ b = Time.zone.now.end_of_day
8
+ elsif value == "yesterday"
9
+ a = (Time.zone.now - 1.day).beginning_of_day
10
+ b = (Time.zone.now - 1.day).end_of_day
11
+ elsif value == "this_week"
12
+ a = Time.zone.now.beginning_of_week
13
+ b = Time.zone.now.end_of_week
14
+ elsif value == "this_month"
15
+ a = Time.zone.now.beginning_of_month
16
+ b = Time.zone.now.end_of_month
17
+ elsif value == "this_year"
18
+ a = Time.zone.now.beginning_of_year
19
+ b = Time.zone.now.end_of_year
20
+ elsif value == "last_week"
21
+ a = (Time.zone.now - 1.week).beginning_of_week
22
+ b = (Time.zone.now - 1.week).end_of_week
23
+ elsif value == "last_month"
24
+ a = (Time.zone.now - 1.month).beginning_of_month
25
+ b = (Time.zone.now - 1.month).end_of_month
26
+ elsif value == "last_year"
27
+ a = (Time.zone.now - 1.year).beginning_of_year
28
+ b = (Time.zone.now - 1.year).end_of_year
29
+ else
30
+ return query
31
+ end
32
+
33
+ column = key.is_a?(Symbol) ? "#{query.model.table_name}.#{key}" : key.to_s
34
+
35
+ query.where("#{column} >= ? AND #{column} <= ?", a, b)
36
+ end
37
+ end
@@ -1,39 +1,6 @@
1
- class Agilibox::SmallData::FilterStrategyByTimePeriod < ::Agilibox::SmallData::FilterStrategyByKeyValue
2
- def apply(query, value) # rubocop:disable Metrics/MethodLength
3
- value = value.to_s
4
-
5
- if value == "today"
6
- a = Time.zone.now.beginning_of_day
7
- b = Time.zone.now.end_of_day
8
- elsif value == "yesterday"
9
- a = (Time.zone.now - 1.day).beginning_of_day
10
- b = (Time.zone.now - 1.day).end_of_day
11
- elsif value == "this_week"
12
- a = Time.zone.now.beginning_of_week
13
- b = Time.zone.now.end_of_week
14
- elsif value == "this_month"
15
- a = Time.zone.now.beginning_of_month
16
- b = Time.zone.now.end_of_month
17
- elsif value == "this_year"
18
- a = Time.zone.now.beginning_of_year
19
- b = Time.zone.now.end_of_year
20
- elsif value == "last_week"
21
- a = (Time.zone.now - 1.week).beginning_of_week
22
- b = (Time.zone.now - 1.week).end_of_week
23
- elsif value == "last_month"
24
- a = (Time.zone.now - 1.month).beginning_of_month
25
- b = (Time.zone.now - 1.month).end_of_month
26
- elsif value == "last_year"
27
- a = (Time.zone.now - 1.year).beginning_of_year
28
- b = (Time.zone.now - 1.year).end_of_year
29
- else
30
- return query
31
- end
32
-
33
- column = key.is_a?(Symbol) ? "#{query.model.table_name}.#{key}" : key.to_s
34
-
35
- query
36
- .where("DATE(#{column}) >= ?", a.to_date)
37
- .where("DATE(#{column}) <= ?", b.to_date)
1
+ class Agilibox::SmallData::FilterStrategyByTimePeriod
2
+ def initialize(*)
3
+ raise "FilterStrategyByTimePeriod is deprecated, please use " \
4
+ "FilterStrategyByDatePeriod or FilterStrategyByDatetimePeriod"
38
5
  end
39
6
  end
@@ -0,0 +1,29 @@
1
+ class Agilibox::MiniFormObject < SimpleDelegator
2
+ include ActiveModel::Validations
3
+ extend Forwardable
4
+
5
+ def valid?
6
+ __getobj__.valid?
7
+ run_validations!
8
+ end
9
+
10
+ def invalid?
11
+ !valid?
12
+ end
13
+
14
+ alias validate valid?
15
+
16
+ def validate!
17
+ valid? || raise_validation_error
18
+ end
19
+
20
+ def_delegators :__getobj__, :errors
21
+
22
+ def save
23
+ valid? && __getobj__.save
24
+ end
25
+
26
+ def save!
27
+ validate! && __getobj__.save!
28
+ end
29
+ end
@@ -7,10 +7,10 @@ class << Agilibox::CucumberConfig = Class.new
7
7
  @phantomjs_version ||= "2.1.1"
8
8
  end
9
9
 
10
- attr_writer :phantomjs_window_size
10
+ attr_writer :window_size
11
11
 
12
- def phantomjs_window_size
13
- @phantomjs_window_size ||= [1680, 1050]
12
+ def window_size
13
+ @window_size ||= [1680, 1050]
14
14
  end
15
15
 
16
16
  attr_writer :databasecleaner_tables
@@ -24,7 +24,16 @@ class << Agilibox::CucumberConfig = Class.new
24
24
  end
25
25
 
26
26
  def require_all_helpers!
27
- files = Dir.glob Agilibox::Engine.root.join("features/support/*.rb")
27
+ files = Dir.glob Agilibox::Engine.root.join("lib", "agilibox", "cucumber_helpers", "*.rb")
28
+ files.delete_if { |f| f.match?(/poltergeist|chrome/) }
28
29
  files.each { |file| require file }
29
30
  end
31
+
32
+ def require_poltergeist!
33
+ require Agilibox::Engine.root.join("lib", "agilibox", "cucumber_helpers", "poltergeist.rb")
34
+ end
35
+
36
+ def require_chrome_headless!
37
+ require Agilibox::Engine.root.join("lib", "agilibox", "cucumber_helpers", "chrome_headless.rb")
38
+ end
30
39
  end
@@ -0,0 +1,11 @@
1
+ Capybara.register_driver :agilibox_no_driver do |_app|
2
+ raise "You need to add Agilibox::CucumberConfig.require_poltergeist! or "\
3
+ "Agilibox::CucumberConfig.require_chrome_headless! " \
4
+ "to your features/support/env.rb"
5
+ end
6
+
7
+ Capybara.default_driver = :agilibox_no_driver
8
+ Capybara.current_driver = :agilibox_no_driver
9
+ Capybara.javascript_driver = :agilibox_no_driver
10
+
11
+ Capybara.default_max_wait_time = 3
@@ -0,0 +1,16 @@
1
+ Capybara.register_driver :agilibox_chrome_headless do |app|
2
+ window_size = Agilibox::CucumberConfig.window_size.map(&:to_s).join(",")
3
+
4
+ capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
5
+ :chromeOptions => {args: %W(headless window-size=#{window_size})},
6
+ )
7
+
8
+ Capybara::Selenium::Driver.new(app,
9
+ :browser => :chrome,
10
+ :desired_capabilities => capabilities,
11
+ )
12
+ end
13
+
14
+ Capybara.default_driver = :agilibox_chrome_headless
15
+ Capybara.current_driver = :agilibox_chrome_headless
16
+ Capybara.javascript_driver = :agilibox_chrome_headless
@@ -6,16 +6,15 @@ raise "invalid phantomjs version" if `#{phantomjs_binary} -v`.strip != phantomjs
6
6
  # You can download phantomjs here : https://bitbucket.org/ariya/phantomjs/downloads/
7
7
  # Semaphore setup commmand : change-phantomjs-version 2.1.1
8
8
 
9
- Capybara.register_driver :poltergeist do |app|
9
+ Capybara.register_driver :agilibox_poltergeist do |app|
10
10
  Capybara::Poltergeist::Driver.new(app,
11
11
  :debug => false,
12
- :window_size => Agilibox::CucumberConfig.phantomjs_window_size,
12
+ :window_size => Agilibox::CucumberConfig.window_size,
13
13
  :timeout => 60,
14
14
  :phantomjs => phantomjs_binary,
15
15
  )
16
16
  end
17
17
 
18
- Capybara.default_driver = :poltergeist
19
- Capybara.javascript_driver = :poltergeist
20
- Capybara.current_driver = :poltergeist
21
- Capybara.default_max_wait_time = 3
18
+ Capybara.default_driver = :agilibox_poltergeist
19
+ Capybara.javascript_driver = :agilibox_poltergeist
20
+ Capybara.current_driver = :agilibox_poltergeist
@@ -1,3 +1,3 @@
1
1
  module Agilibox
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agilibox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - agilidée
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-27 00:00:00.000000000 Z
11
+ date: 2018-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails-i18n
@@ -87,10 +87,13 @@ files:
87
87
  - app/filters/agilibox/small_data/filter_strategy_by_date.rb
88
88
  - app/filters/agilibox/small_data/filter_strategy_by_date_begin.rb
89
89
  - app/filters/agilibox/small_data/filter_strategy_by_date_end.rb
90
+ - app/filters/agilibox/small_data/filter_strategy_by_date_period.rb
91
+ - app/filters/agilibox/small_data/filter_strategy_by_datetime_period.rb
90
92
  - app/filters/agilibox/small_data/filter_strategy_by_key_value.rb
91
93
  - app/filters/agilibox/small_data/filter_strategy_by_key_values.rb
92
94
  - app/filters/agilibox/small_data/filter_strategy_by_tags.rb
93
95
  - app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
96
+ - app/forms/agilibox/mini_form_object.rb
94
97
  - app/helpers/agilibox/all_helpers.rb
95
98
  - app/helpers/agilibox/bootstrap_helper.rb
96
99
  - app/helpers/agilibox/button_helper.rb
@@ -143,26 +146,27 @@ files:
143
146
  - config/locales/errors.fr.yml
144
147
  - config/routes.rb
145
148
  - db/migrate/20170502143330_enable_unaccent.rb
146
- - features/support/agilibox.rb
147
- - features/support/ajax.rb
148
- - features/support/database_cleaner.rb
149
- - features/support/env.rb
150
- - features/support/factory_bot.rb
151
- - features/support/fix_referrer.rb
152
- - features/support/poltergeist.rb
153
- - features/support/rails.rb
154
- - features/support/rspec.rb
155
- - features/support/screenshots.rb
156
- - features/support/select2.rb
157
- - features/support/sign_in.rb
158
- - features/support/simplecov.rb
159
- - features/support/timecop.rb
160
- - features/support/turbolinks.rb
161
- - features/support/zonebie.rb
162
149
  - lib/agilibox.rb
163
150
  - lib/agilibox/active_record_comma_type_cast.rb
164
151
  - lib/agilibox/core_and_rails_ext.rb
165
152
  - lib/agilibox/cucumber_config.rb
153
+ - lib/agilibox/cucumber_helpers/agilibox.rb
154
+ - lib/agilibox/cucumber_helpers/ajax.rb
155
+ - lib/agilibox/cucumber_helpers/capybara.rb
156
+ - lib/agilibox/cucumber_helpers/chrome_headless.rb
157
+ - lib/agilibox/cucumber_helpers/database_cleaner.rb
158
+ - lib/agilibox/cucumber_helpers/factory_bot.rb
159
+ - lib/agilibox/cucumber_helpers/fix_referrer.rb
160
+ - lib/agilibox/cucumber_helpers/poltergeist.rb
161
+ - lib/agilibox/cucumber_helpers/rails.rb
162
+ - lib/agilibox/cucumber_helpers/rspec.rb
163
+ - lib/agilibox/cucumber_helpers/screenshots.rb
164
+ - lib/agilibox/cucumber_helpers/select2.rb
165
+ - lib/agilibox/cucumber_helpers/sign_in.rb
166
+ - lib/agilibox/cucumber_helpers/simplecov.rb
167
+ - lib/agilibox/cucumber_helpers/timecop.rb
168
+ - lib/agilibox/cucumber_helpers/turbolinks.rb
169
+ - lib/agilibox/cucumber_helpers/zonebie.rb
166
170
  - lib/agilibox/engine.rb
167
171
  - lib/agilibox/engine_file.rb
168
172
  - lib/agilibox/form_back_url.rb
@@ -191,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
195
  version: '0'
192
196
  requirements: []
193
197
  rubyforge_project:
194
- rubygems_version: 2.6.13
198
+ rubygems_version: 2.7.6
195
199
  signing_key:
196
200
  specification_version: 4
197
201
  summary: Agilibox
@@ -1,3 +0,0 @@
1
- ENV["RAILS_ROOT"] ||= File.expand_path("../../spec/dummy", __dir__)
2
- require "cucumber/rails"
3
- require "agilibox/cucumber_config"