capybara_active_admin 0.2.0 → 0.2.1

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: 9aa80eda0b75b26f75d6b7a1a0df8355c8ef0bdb622687ecbd020bdc0cec6688
4
- data.tar.gz: a9d73931be3341bca9fc81399009ae7f7c1045d72976ab24603d5818a408ed65
3
+ metadata.gz: 16668060b6810df687cbcfd8757396b2ff13c9f98519090928308f872609017f
4
+ data.tar.gz: 6f005ee3bcf21792abf5246d284802aa1ae52544c1547cd9f1ca0ece36ef6e99
5
5
  SHA512:
6
- metadata.gz: 7a5c5af2f5bf9bdfb9ceb7f8dfdbf416ecd02b8a51df91e8a310dcfb9ff4ec7f40556059edf4070a352999c7c67129c2c97eaf6ff6ef5a44110e85523f4af553
7
- data.tar.gz: 653677e018c186b840985382f29a1735595d3a0a4a193b4c7472edae0065decac190663a794a917d323b9d24701a0d9f9035927ffa43ff26e8f7da8babd07ead
6
+ metadata.gz: 9488c08a71f94b535a4723fce444cb5a4bbf804c34c3e9593e10849925476e7294a47db30420669fbe87aa38bc2e8bfb249f0b7312e67c6c9057678eea82eea8
7
+ data.tar.gz: 3bdf50dc809f1515e64bc73a46d622cb540342ef8da2e587ff9627f9018eee75565b5402c692eb23ad97030f07c7e47249535b961de2e0f3173e85627a003f8a
data/CHANGELOG.md CHANGED
@@ -6,13 +6,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [0.2.0] - 2020-04-14
10
- ### Breaking change
11
- - rename #have_table_col to #have_table_cell
12
- - change options of #have_table_cell
13
- - change options of #have_table_row
9
+ ## [0.2.1] - 2020-04-14
10
+ ### Fixed
11
+ - `table_selector`, `within_table_for` incorrect resource name
12
+
13
+ ### Changed
14
+ - `table_selector` receives 2 arguments
15
+ - `within_table_for` receives 2 arguments
16
+ - `current_table_name` renamed to `current_table_model_name`
17
+ - `table_row_selector` can receive modal class as model name
18
+
19
+ # Added
20
+ - `have_table` matcher
21
+ - add tests for table with namespaced resource class and multi-word resource name
14
22
 
15
- ### Change
23
+ ## [0.2.0] - 2020-04-14
24
+ ### Changed
25
+ - rename `have_table_col` to `have_table_cell`
26
+ - change options of `have_table_cell`
27
+ - change options of `have_table_row`
16
28
  - refactor modules hierarchy: split DSL into selectors, finders, matchers and actions
17
29
 
18
30
  ### Added
@@ -4,21 +4,23 @@ module Capybara
4
4
  module ActiveAdmin
5
5
  module Finders
6
6
  module Table
7
- def current_table_name
8
- @__current_table_name
7
+ def current_table_model_name
8
+ @__current_table_model_name
9
9
  end
10
10
 
11
- def within_table_for(name)
12
- name = name.model_name.plural if name.is_a?(Class)
13
- selector = table_selector(name)
11
+ # @param model_name [Class<#model_name>, String] records class or model name to match rows.
12
+ # @param resource_name [String, nil] resource name of index page.
13
+ # @yield within table.
14
+ def within_table_for(model_name, resource_name = nil)
15
+ selector = table_selector(resource_name)
14
16
 
15
17
  within(selector) do
16
- old = @__current_table_name
17
- @__current_table_name = name
18
+ old = @__current_table_model_name
19
+ @__current_table_model_name = model_name
18
20
  begin
19
21
  yield
20
22
  ensure
21
- @__current_table_name = old
23
+ @__current_table_model_name = old
22
24
  end
23
25
  end
24
26
  end
@@ -33,12 +35,12 @@ module Capybara
33
35
  raise ArgumentError, 'must provide :id or :index' if id.nil? && index.nil?
34
36
 
35
37
  if id
36
- model = @__current_table_name
37
- selector = table_row_selector(model, id)
38
+ selector = table_row_selector(current_table_model_name, id)
38
39
  return find(selector)
39
40
  end
40
41
 
41
- find_all(table_row_selector(nil, nil), minimum: index + 1)[index]
42
+ selector = table_row_selector(nil, nil)
43
+ find_all(selector, minimum: index + 1)[index]
42
44
  end
43
45
 
44
46
  def within_table_cell(name)
@@ -4,6 +4,19 @@ module Capybara
4
4
  module ActiveAdmin
5
5
  module Matchers
6
6
  module Table
7
+ # @param options [Hash]
8
+ # :resource_name [String, nil] active admin page resource name
9
+ # for other options @see Capybara::RSpecMatchers#have_selector
10
+ # @example
11
+ # expect(page).to have_table
12
+ # expect(page).to have_table(resource_name: 'users')
13
+ #
14
+ def have_table(options = {})
15
+ resource_name = options.delete(:resource_name)
16
+ selector = table_selector(resource_name)
17
+ have_selector(selector, options)
18
+ end
19
+
7
20
  # @param options [Hash]
8
21
  # :text [String, nil] cell content
9
22
  # :id [String, Number, nil] record ID
@@ -15,7 +28,7 @@ module Capybara
15
28
  #
16
29
  def have_table_row(options = {})
17
30
  row_id = options.delete(:id)
18
- selector = table_row_selector(current_table_name, row_id)
31
+ selector = table_row_selector(current_table_model_name, row_id)
19
32
  have_selector(selector, options)
20
33
  end
21
34
 
@@ -4,16 +4,19 @@ module Capybara
4
4
  module ActiveAdmin
5
5
  module Selectors
6
6
  module Table
7
- def table_selector(model)
8
- return 'table.index_table' if model.nil?
7
+ def table_selector(resource_name)
8
+ return 'table.index_table' if resource_name.nil?
9
9
 
10
- "table.index_table#index_table_#{model.to_s.pluralize}"
10
+ resource_name = resource_name.to_s.gsub(' ', '_').pluralize.downcase
11
+ "table#index_table_#{resource_name}"
11
12
  end
12
13
 
13
- def table_row_selector(model, record_id)
14
+ def table_row_selector(model_name, record_id)
14
15
  return 'tbody > tr' if record_id.nil?
15
16
 
16
- "tbody > tr##{model.to_s.singularize}_#{record_id}"
17
+ model_name = model_name.model_name.singular if model_name.is_a?(Class)
18
+ model_name = model_name.to_s.gsub(' ', '_').singularize.downcase
19
+ "tbody > tr##{model_name}_#{record_id}"
17
20
  end
18
21
 
19
22
  def table_header_selector
@@ -21,9 +24,9 @@ module Capybara
21
24
  end
22
25
 
23
26
  def table_cell_selector(column)
24
- column = column.to_s.gsub(' ', '_').downcase unless column.nil?
25
27
  return 'td.col' if column.nil?
26
28
 
29
+ column = column.to_s.gsub(' ', '_').downcase
27
30
  "td.col.col-#{column}"
28
31
  end
29
32
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Capybara
4
4
  module ActiveAdmin
5
- VERSION = '0.2.0'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara_active_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Talakevich