56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe 'Dropdown release', :js do
|
||
|
include FilteredSearchHelpers
|
||
|
|
||
|
let!(:project) { create(:project, :repository) }
|
||
|
let!(:user) { create(:user) }
|
||
|
let!(:release) { create(:release, tag: 'v1.0', project: project) }
|
||
|
let!(:crazy_release) { create(:release, tag: '☺!/"#%&\'{}+,-.<>;=@]_`{|}🚀', project: project) }
|
||
|
|
||
|
def filtered_search
|
||
|
find('.filtered-search')
|
||
|
end
|
||
|
|
||
|
def filter_dropdown
|
||
|
find('#js-dropdown-release .filter-dropdown')
|
||
|
end
|
||
|
|
||
|
before do
|
||
|
project.add_maintainer(user)
|
||
|
sign_in(user)
|
||
|
create(:issue, project: project)
|
||
|
|
||
|
visit project_issues_path(project)
|
||
|
end
|
||
|
|
||
|
describe 'behavior' do
|
||
|
before do
|
||
|
filtered_search.set('release:')
|
||
|
end
|
||
|
|
||
|
def expect_results(count)
|
||
|
expect(filter_dropdown).to have_selector('.filter-dropdown .filter-dropdown-item', count: count)
|
||
|
end
|
||
|
|
||
|
it 'loads all the releases when opened' do
|
||
|
expect_results(2)
|
||
|
end
|
||
|
|
||
|
it 'filters by tag name' do
|
||
|
filtered_search.send_keys("☺")
|
||
|
expect_results(1)
|
||
|
end
|
||
|
|
||
|
it 'fills in the release name when the autocomplete hint is clicked' do
|
||
|
find('#js-dropdown-release .filter-dropdown-item', text: crazy_release.tag).click
|
||
|
|
||
|
expect(page).to have_css('#js-dropdown-release', visible: false)
|
||
|
expect_tokens([release_token(crazy_release.tag)])
|
||
|
expect_filtered_search_input_empty
|
||
|
end
|
||
|
end
|
||
|
end
|