Sha256: 6b69565fd38456e22e24bca2ab23f0e11bf32852c78960de7d71ff6f00babe90

Contents?: true

Size: 1.92 KB

Versions: 28

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require_relative "capybara_data_picker"

module Capybara
  module ProposalsPicker
    include DataPicker

    RSpec::Matchers.define :have_data_picked do |expected, text|
      match do |data_picker|
        data_picker_elem = data_picker.data_picker
        expect(data_picker_elem).to have_selector(".picker-values div input[value='#{expected&.id || data_picker.global_value}']", visible: false)
        expect(data_picker_elem).to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,'#{text}')]]")
      end
    end

    def proposal_pick(proposal_picker, proposal)
      data_picker = proposal_picker.data_picker
      # use scope_repick to change single scope picker selected scope
      expect(data_picker).to have_selector(".picker-values:empty", visible: false) if data_picker.has_css?(".picker-single")

      expect(data_picker).to have_selector(".picker-prompt")
      data_picker.find(".picker-prompt").click

      proposal_picker_search_perform(proposal.title)
      proposal_picker_search_choose_result(proposal.id)
      data_picker_pick_current

      expect(proposal_picker).to have_data_picked(proposal, proposal.title)
    end

    private

    def proposal_picker_search_perform(term)
      body = find(:xpath, "//body")
      input_selector = "#data_picker-modal .picker-content input#data_picker-autocomplete"
      expect(body).to have_selector(input_selector)
      body.find("#data_picker-modal .picker-content").fill_in("data_picker-autocomplete", with: term)
    end

    def proposal_picker_search_choose_result(proposal_id)
      body = find(:xpath, "//body")
      expect(body).to have_selector(".autocomplete-suggestions .autocomplete-suggestion")
      body.find(".autocomplete-suggestions div.autocomplete-suggestion[data-model-id='#{proposal_id}']").click
    end
  end
end

RSpec.configure do |config|
  config.include Capybara::ProposalsPicker, type: :system
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
decidim-dev-0.21.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.20.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.20.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.19.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.18.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.19.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.17.2 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.18.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.17.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.16.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.17.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.16.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.15.2 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.15.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.15.0 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.14.4 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.14.3 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.14.2 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.14.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb
decidim-dev-0.13.1 lib/decidim/dev/test/rspec_support/capybara_proposals_picker.rb