agilibox 1.1.0 → 1.2.0

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.
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"