capybara-select-2 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f31200b3f8f18c77f09f9e50d37337678d65f249
4
- data.tar.gz: 9dfd0e03e4708f0e601e217a989a5162c924b370
3
+ metadata.gz: 1270129638518b209d629a987b5998c6e80ee997
4
+ data.tar.gz: b8681b7193f7b789d5c900115474007103fb819c
5
5
  SHA512:
6
- metadata.gz: 6021c4c6707b822f7a9cef51ccd97357d886a6c33176fa6e36a8fb25e9df78a673415abd4983a51d536dee703c048de41a46069bc263b0ce8e8356883b67b2db
7
- data.tar.gz: e220e4c3ffbfa5e3dc00d7e837d00e5d4b17764bf90d4eecc20ca017bb18752441ad074ae3067def35231fa8783d0c2ce8a52bda8615481ae2c9203b6041d287
6
+ metadata.gz: b7b8e06ff700058b083008769bc926d50c0fe24aacfc5507736c7eff9f099f9185f3dcd36acb93d171e60234d727d2ca32ee848a850f46e578d4d652536ab30c
7
+ data.tar.gz: 6bb11c66346bd4b26d5416548c74939c16013d26b40cd41bd7ecb1d009b5d9fadcdb4f3dff463b2ab20a3c2c8e8e84e9a2371b2ae2737f09530854fe5cd412ef
@@ -1,3 +1,5 @@
1
+ sudo: required
2
+ dist: trusty
1
3
  language: ruby
2
4
  rvm:
3
5
  - 2.4.2
@@ -6,3 +8,16 @@ env:
6
8
  - MOZ_HEADLESS=1
7
9
  addons:
8
10
  firefox: latest
11
+ apt:
12
+ sources:
13
+ - ubuntu-sdk-team
14
+ packages:
15
+ - libqt5webkit5-dev
16
+ - qtdeclarative5-dev
17
+ before_install:
18
+ - export GECKODRIVER_VERSION=0.21.0
19
+ - wget https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz
20
+ - mkdir geckodriver
21
+ - tar -xzf geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz -C geckodriver
22
+ - export PATH=$PATH:$PWD/geckodriver
23
+ script: xvfb-run bundle exec rspec
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # CapybaraSelect2 for select2 version 2/3/4
2
- !!! For select2 versions 2 and 3 you need to specify which version you are using. See [Configuration](https://github.com/Hirurg103/capybara_select2#configuration)
2
+ !!! CapybaraSelect2 detects version select2 automatically
3
3
 
4
4
  [![Build Status](https://travis-ci.org/Hirurg103/capybara_select2.svg?branch=master)](https://travis-ci.org/Hirurg103/capybara_select2)
5
5
 
@@ -41,20 +41,6 @@ In your env.rb
41
41
  World CapybaraSelect2
42
42
  ```
43
43
 
44
- ## Configuration
45
-
46
- CapybaraSelect2 expects select2 version 4 by default. If you are using version 3 or 2 please specify it in your spec helper
47
-
48
- ```ruby
49
- CapybaraSelect2::Config.select2_version = 3
50
-
51
- # or
52
-
53
- CapybaraSelect2.configure do |config|
54
- config.select2_version = 3
55
- end
56
- ```
57
-
58
44
  ## Usage
59
45
 
60
46
  ### Select from a node containing select2 control
@@ -84,6 +70,11 @@ select2 'Buy Milk', from: 'Things to do', search: true
84
70
  select2 'Millennials', from: 'Generations', tag: true
85
71
  ```
86
72
 
73
+ ### Select several options at once
74
+ ```ruby
75
+ select2 'Buy Milk', 'Go to gym', css: '#todo'
76
+ ```
77
+
87
78
  ## Contributing
88
79
 
89
80
  1. Add a test case which covers the bug
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "rake", "~> 10.0"
31
31
  spec.add_development_dependency "rspec", "~> 3.0"
32
32
  spec.add_development_dependency "capybara", "~> 3.5"
33
- spec.add_development_dependency "selenium-webdriver", "~> 2.53"
33
+ spec.add_development_dependency "selenium-webdriver", "~> 3.5"
34
34
  spec.add_development_dependency "capybara-screenshot" , "~> 1.0"
35
35
  spec.add_development_dependency "capybara-webkit", "~> 1.15"
36
36
  spec.add_development_dependency "puma", "~> 3.12"
@@ -1,6 +1,5 @@
1
1
  require "capybara_select2/version"
2
2
  require 'capybara_select2/helpers'
3
- require 'capybara_select2/config'
4
3
 
5
4
  module CapybaraSelect2
6
5
  include Helpers
@@ -1,43 +1,59 @@
1
+ require 'capybara_select2/utils'
2
+
1
3
  module CapybaraSelect2
2
4
  module Helpers
3
- def select2(value, options = {})
4
- version = Config.select2_version.to_s
5
+
6
+ def select2(*args)
7
+ options = args.pop
8
+ values = args
9
+
10
+ Utils.validate_options!(options)
11
+
12
+ container = if options[:xpath]
13
+ find(:xpath, options[:xpath])
14
+ elsif options[:css]
15
+ find(:css, options[:css])
16
+ else
17
+ find("label:not(.select2-offscreen)", text: options[:from])
18
+ .find(:xpath, '..')
19
+ .find('.select2-container')
20
+ end
21
+
22
+ container = if container['class'] =~ /select2-container/
23
+ container
24
+ else
25
+ container.find('.select2-container')
26
+ end
27
+
28
+ version = Utils.detect_version(container)
5
29
 
6
30
  open_select = {
7
31
  '2' => ".select2-choice, .select2-search-field",
8
32
  '3' => ".select2-choice, .select2-search-field",
9
33
  '4' => ".select2-selection"
10
- }[version]
34
+ }.fetch(version)
11
35
 
12
36
  search_input = {
13
37
  '2' => ".select2-dropdown-open input.select2-focused",
14
38
  '3' => ".select2-dropdown-open input.select2-input",
15
39
  '4' => ".select2-container--open input.select2-search__field"
16
- }[version]
40
+ }.fetch(version)
17
41
 
18
42
  option = {
19
43
  '2' => ".select2-container-active .select2-result",
20
44
  '3' => ".select2-drop-active .select2-result",
21
45
  '4' => ".select2-results .select2-results__option"
22
- }[version]
46
+ }.fetch(version)
23
47
 
24
- container = if options[:xpath]
25
- find(:xpath, options[:xpath])
26
- elsif options[:css]
27
- find(:css, options[:css])
28
- else
29
- find("label:not(.select2-offscreen)", text: options[:from])
30
- .find(:xpath, '..')
31
- .find('.select2-container')
32
- end
48
+ values.each do |value|
49
+ container.find(open_select).click
33
50
 
34
- container.find(open_select).click
51
+ if options[:search] || options[:tag]
52
+ find(search_input).set value
53
+ end
35
54
 
36
- if options[:search] || options[:tag]
37
- find(search_input).set value
55
+ find(:xpath, '//body').find(option, text: value).click
38
56
  end
39
-
40
- find(:xpath, '//body').find(option, text: value).click
41
57
  end
42
58
 
43
59
  end
@@ -0,0 +1,21 @@
1
+ module CapybaraSelect2
2
+ module Utils
3
+
4
+ def self.detect_version(container)
5
+ if container['class'] =~ /^select2\s/
6
+ '4'
7
+ elsif container['id'] =~ /^s2id_/
8
+ '3'
9
+ else
10
+ '2'
11
+ end
12
+ end
13
+
14
+ def self.validate_options!(options)
15
+ unless options.is_a?(Hash) && [:css, :xpath, :from].any? { |k| options.key?(k) }
16
+ fail ArgumentError.new("Please specify :css, :xpath or :from in options")
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module CapybaraSelect2
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-select-2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dzmitry Kavalionak
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.53'
75
+ version: '3.5'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.53'
82
+ version: '3.5'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: capybara-screenshot
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -156,8 +156,8 @@ files:
156
156
  - capybara_select2.gemspec
157
157
  - lib/capybara-select-2.rb
158
158
  - lib/capybara_select2.rb
159
- - lib/capybara_select2/config.rb
160
159
  - lib/capybara_select2/helpers.rb
160
+ - lib/capybara_select2/utils.rb
161
161
  - lib/capybara_select2/version.rb
162
162
  homepage: https://github.com/Hirurg103/capybara_select2
163
163
  licenses:
@@ -1,15 +0,0 @@
1
- module CapybaraSelect2
2
-
3
- def self.configure
4
- yield Config
5
- end
6
-
7
- class Config
8
- class << self
9
- attr_accessor :select2_version
10
- end
11
- end
12
-
13
- Config.select2_version ||= 4
14
-
15
- end