mirror of
https://github.com/CodeforLeipzig/stadtratmonitor.git
synced 2024-12-22 07:43:13 +01:00
Rubocop autocorrect specs
This commit is contained in:
parent
247f4b85b7
commit
5c2e1bfe1e
13 changed files with 279 additions and 269 deletions
|
@ -1,48 +1,46 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SearchController, type: :controller, elasticsearch: true do
|
||||
|
||||
describe "GET #index" do
|
||||
it "returns http success" do
|
||||
describe 'GET #index' do
|
||||
it 'returns http success' do
|
||||
get :index, body: 'leipzig'
|
||||
expect(response).to have_http_status(:success)
|
||||
end
|
||||
|
||||
it "assigns @search_definition with default sort order" do
|
||||
it 'assigns @search_definition with default sort order' do
|
||||
search = PaperSearch.new(sort_by: 'date')
|
||||
get :index, body: 'leipzig'
|
||||
expect(assigns(:search_definition).attributes).to eq(search.attributes)
|
||||
end
|
||||
|
||||
it "renders the index template" do
|
||||
it 'renders the index template' do
|
||||
get :index, body: 'leipzig'
|
||||
expect(response).to render_template(:index)
|
||||
end
|
||||
|
||||
it "executes the search with PaperSearch parameters" do
|
||||
pending("simplify search implementation")
|
||||
result_page = double("page", results: []) # MEH
|
||||
response = double("es_response", page: result_page)
|
||||
it 'executes the search with PaperSearch parameters' do
|
||||
pending('simplify search implementation')
|
||||
result_page = double('page', results: []) # MEH
|
||||
response = double('es_response', page: result_page)
|
||||
expect(Paper).to receive(:search).and_return(response)
|
||||
|
||||
get :index, body: 'leipzig'
|
||||
end
|
||||
|
||||
|
||||
it "returns rss" do
|
||||
get :index, :format => "rss", body: 'leipzig'
|
||||
it 'returns rss' do
|
||||
get :index, format: 'rss', body: 'leipzig'
|
||||
expect(response).to be_success
|
||||
expect(response).to render_template(:index)
|
||||
expect(response.content_type).to eq("application/rss+xml")
|
||||
#expect(response.body).to have_tag "rss" do
|
||||
expect(response.content_type).to eq('application/rss+xml')
|
||||
# expect(response.body).to have_tag "rss" do
|
||||
# with_tag "channel" do
|
||||
# with_tag "title"
|
||||
# with_tag "description"
|
||||
# with_tag "link"
|
||||
# end
|
||||
#end
|
||||
# end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative '../factory_helper'
|
||||
|
||||
FactoryBot.define do
|
||||
factory :paper do
|
||||
name { Faker::Lorem.sentence }
|
||||
sequence(:url) { |n| Faker::Internet.url(host: "ris.example.org", path: "/paper-#{n}.html") }
|
||||
sequence(:url) { |n| Faker::Internet.url(host: 'ris.example.org', path: "/paper-#{n}.html") }
|
||||
sequence(:reference) { |n| FactoryHelper.reference(n) }
|
||||
body { "leipzig" }
|
||||
published_at { "2015-07-20 21:16:53" }
|
||||
scraped_at { "2015-07-20 21:16:53" }
|
||||
body { 'leipzig' }
|
||||
published_at { '2015-07-20 21:16:53' }
|
||||
scraped_at { '2015-07-20 21:16:53' }
|
||||
paper_type { FactoryHelper.paper_type }
|
||||
originator { Faker::Name.name }
|
||||
resolution { Faker::Lorem.paragraph(sentence_count: 3) }
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
module FactoryHelper
|
||||
# frozen_string_literal: true
|
||||
|
||||
module FactoryHelper
|
||||
PAPER_TYPES = [
|
||||
"Verwaltungsstandpunkt",
|
||||
"Anfrage",
|
||||
"Beschlussvorlage",
|
||||
"Änderungsantrag",
|
||||
"Antrag",
|
||||
"Neufassung",
|
||||
"Informationsvorlage",
|
||||
"Einwohneranfrage",
|
||||
"Petition",
|
||||
"schriftliche Antwort zur Anfrage",
|
||||
"Wichtige Angelegenheit",
|
||||
"Eilentscheidung",
|
||||
"Dringliche Anfrage"
|
||||
]
|
||||
'Verwaltungsstandpunkt',
|
||||
'Anfrage',
|
||||
'Beschlussvorlage',
|
||||
'Änderungsantrag',
|
||||
'Antrag',
|
||||
'Neufassung',
|
||||
'Informationsvorlage',
|
||||
'Einwohneranfrage',
|
||||
'Petition',
|
||||
'schriftliche Antwort zur Anfrage',
|
||||
'Wichtige Angelegenheit',
|
||||
'Eilentscheidung',
|
||||
'Dringliche Anfrage'
|
||||
].freeze
|
||||
|
||||
def self.paper_type
|
||||
PAPER_TYPES.sample
|
||||
end
|
||||
|
||||
REFERENCE = "A-%05i/16"
|
||||
REFERENCE = 'A-%05i/16'
|
||||
|
||||
def self.reference(seq)
|
||||
REFERENCE % seq
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,130 +1,130 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
require 'pp'
|
||||
|
||||
RSpec.feature "Basic search", type: :feature, elasticsearch: true do
|
||||
|
||||
RSpec.feature 'Basic search', type: :feature, elasticsearch: true do
|
||||
before(:each) do
|
||||
@papers = FactoryBot.create_list(:paper, 11)
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
end
|
||||
|
||||
scenario "It displays the search form" do
|
||||
visit search_path body: "leipzig"
|
||||
expect(page).to have_content("Stadtratmonitor")
|
||||
expect(page).to have_field("paper_search_query")
|
||||
expect(page).to have_select("Typ")
|
||||
expect(page).to have_select("Einreicher")
|
||||
expect(page).to have_selector("label", text: "Sortierung")
|
||||
expect(page).to have_field("paper_search_sort_by_date", type: "radio")
|
||||
expect(page).to have_field("paper_search_sort_by_score", type: "radio")
|
||||
scenario 'It displays the search form' do
|
||||
visit search_path body: 'leipzig'
|
||||
expect(page).to have_content('Stadtratmonitor')
|
||||
expect(page).to have_field('paper_search_query')
|
||||
expect(page).to have_select('Typ')
|
||||
expect(page).to have_select('Einreicher')
|
||||
expect(page).to have_selector('label', text: 'Sortierung')
|
||||
expect(page).to have_field('paper_search_sort_by_date', type: 'radio')
|
||||
expect(page).to have_field('paper_search_sort_by_score', type: 'radio')
|
||||
end
|
||||
|
||||
scenario "With empty query displays all documents" do
|
||||
visit search_path body: "leipzig"
|
||||
expect(page).to have_selector("ul#search_results")
|
||||
scenario 'With empty query displays all documents' do
|
||||
visit search_path body: 'leipzig'
|
||||
expect(page).to have_selector('ul#search_results')
|
||||
expect(page).to have_content("#{@papers.size} Dokumente in der Datenbank")
|
||||
end
|
||||
|
||||
scenario "Search results are paginated" do
|
||||
visit search_path body: "leipzig"
|
||||
expect(page).to have_css("li.search-result", count: 10)
|
||||
expect(page).to have_css("div#pagination")
|
||||
within("div#pagination") do
|
||||
expect(page).to have_css("li", count: 4) # two pages + next + last
|
||||
expect(page).to have_css("li.current", text: "1")
|
||||
expect(page).to have_link("2")
|
||||
expect(page).to have_link("Weiter")
|
||||
expect(page).to have_link("Ende")
|
||||
scenario 'Search results are paginated' do
|
||||
visit search_path body: 'leipzig'
|
||||
expect(page).to have_css('li.search-result', count: 10)
|
||||
expect(page).to have_css('div#pagination')
|
||||
within('div#pagination') do
|
||||
expect(page).to have_css('li', count: 4) # two pages + next + last
|
||||
expect(page).to have_css('li.current', text: '1')
|
||||
expect(page).to have_link('2')
|
||||
expect(page).to have_link('Weiter')
|
||||
expect(page).to have_link('Ende')
|
||||
end
|
||||
|
||||
page.find("div#pagination").click_link("2")
|
||||
expect(page).to have_css("li.search-result", count: 1)
|
||||
within("div#pagination") do
|
||||
expect(page).to have_css("li.current", text: "2")
|
||||
page.find('div#pagination').click_link('2')
|
||||
expect(page).to have_css('li.search-result', count: 1)
|
||||
within('div#pagination') do
|
||||
expect(page).to have_css('li.current', text: '2')
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Search results have basic information" do
|
||||
visit search_path body: "leipzig"
|
||||
scenario 'Search results have basic information' do
|
||||
visit search_path body: 'leipzig'
|
||||
paper = @papers.first
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
|
||||
resultSubEntry = resultEntry.find("li.current", match: :first)
|
||||
resultSubEntry = resultEntry.find('li.current', match: :first)
|
||||
linkName = getLinkName(paper)
|
||||
expect(resultSubEntry).to have_link(linkName, href: paper.url)
|
||||
end
|
||||
|
||||
def getLinkName(paper)
|
||||
dateStr = I18n.l(paper.published_at.to_date)
|
||||
originatorStr = (paper.originator.kind_of?(Array) ?
|
||||
paper.originator.join(", ") : paper.originator)
|
||||
return "#{dateStr}: #{paper.paper_type} von #{originatorStr}"
|
||||
originatorStr = (paper.originator.is_a?(Array) ?
|
||||
paper.originator.join(', ') : paper.originator)
|
||||
"#{dateStr}: #{paper.paper_type} von #{originatorStr}"
|
||||
end
|
||||
|
||||
scenario "Finds papers by name" do
|
||||
paper = FactoryBot.create(:paper, name: "Opendata als default")
|
||||
scenario 'Finds papers by name' do
|
||||
paper = FactoryBot.create(:paper, name: 'Opendata als default')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Opendata"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Opendata' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
|
||||
resultSubEntry = resultEntry.find("li.current", match: :first)
|
||||
resultSubEntry = resultEntry.find('li.current', match: :first)
|
||||
linkName = getLinkName(paper)
|
||||
expect(resultSubEntry).to have_link(linkName, href: paper.url)
|
||||
end
|
||||
|
||||
scenario "Finds papers by content" do
|
||||
scenario 'Finds papers by content' do
|
||||
paper = FactoryBot.create(:paper,
|
||||
name: "Opendata als default",
|
||||
content: "Alle Verwaltungsdokumente werden als Opendata veröffentlicht"
|
||||
)
|
||||
name: 'Opendata als default',
|
||||
content: 'Alle Verwaltungsdokumente werden als Opendata veröffentlicht')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Verwaltungsdokumente"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Verwaltungsdokumente' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
|
||||
resultSubEntry = resultEntry.find("li.current", match: :first)
|
||||
resultSubEntry = resultEntry.find('li.current', match: :first)
|
||||
linkName = getLinkName(paper)
|
||||
expect(resultSubEntry).to have_link(linkName, href: paper.url)
|
||||
end
|
||||
|
||||
scenario "Papers with common reference id in search result ordered by date" do
|
||||
scenario 'Papers with common reference id in search result ordered by date' do
|
||||
mainPaper = FactoryBot.create(:paper, published_at: '2016-12-19T19:00:00',
|
||||
name: "Opendata als default", reference: "VI-0815")
|
||||
name: 'Opendata als default', reference: 'VI-0815')
|
||||
newPaper = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als optional", reference: "VI-0815-ÄA-01")
|
||||
name: 'Opendata als optional', reference: 'VI-0815-ÄA-01')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "default"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'default' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(mainPaper.name)
|
||||
|
||||
resultSubEntry1 = resultEntry.find("li.current", match: :first)
|
||||
resultSubEntry1 = resultEntry.find('li.current', match: :first)
|
||||
linkName1 = getLinkName(mainPaper)
|
||||
expect(resultSubEntry1).to have_link(linkName1, href: mainPaper.url)
|
||||
|
||||
resultSubEntries = resultEntry.find("ul").all("li")
|
||||
resultSubEntries = resultEntry.find('ul').all('li')
|
||||
linkName2 = getLinkName(newPaper)
|
||||
expect(resultSubEntries[0]).to have_link(linkName2, href: newPaper.url)
|
||||
expect(resultSubEntries[1]).to have_link(linkName1, href: mainPaper.url)
|
||||
end
|
||||
|
||||
scenario "Papers with common reference id in search result ordered by ref" do
|
||||
scenario 'Papers with common reference id in search result ordered by ref' do
|
||||
mainPaper = FactoryBot.create(:paper, published_at: '2016-12-19T19:00:00',
|
||||
name: "Opendata als default", reference: "VI-0815")
|
||||
name: 'Opendata als default', reference: 'VI-0815')
|
||||
newPaper1 = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als optional", reference: "VI-0815-ÄA-02")
|
||||
name: 'Opendata als optional', reference: 'VI-0815-ÄA-02')
|
||||
newPaper2 = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als optional", reference: "VI-0815-ÄA-01")
|
||||
name: 'Opendata als optional', reference: 'VI-0815-ÄA-01')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "default"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'default' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
|
||||
resultSubEntries = resultEntry.find("ul").all("li")
|
||||
resultSubEntries = resultEntry.find('ul').all('li')
|
||||
linkName1 = getLinkName(newPaper1)
|
||||
expect(resultSubEntries[0]).to have_link(linkName1, href: newPaper1.url)
|
||||
linkName2 = getLinkName(newPaper2)
|
||||
|
@ -133,19 +133,19 @@ RSpec.feature "Basic search", type: :feature, elasticsearch: true do
|
|||
expect(resultSubEntries[2]).to have_link(linkName3, href: mainPaper.url)
|
||||
end
|
||||
|
||||
scenario "Papers with common reference id handled also for missing prefix" do
|
||||
scenario 'Papers with common reference id handled also for missing prefix' do
|
||||
mainPaper = FactoryBot.create(:paper, published_at: '2016-12-19T19:00:00',
|
||||
name: "Opendata als default", reference: "VI-0815")
|
||||
name: 'Opendata als default', reference: 'VI-0815')
|
||||
newPaper1 = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als optional", reference: "VI-0815-NF-01")
|
||||
name: 'Opendata als optional', reference: 'VI-0815-NF-01')
|
||||
newPaper1Change = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als nicht optional", reference: "-0815-NF-01-ÄA-01")
|
||||
name: 'Opendata als nicht optional', reference: '-0815-NF-01-ÄA-01')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "default"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'default' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
|
||||
resultSubEntries = resultEntry.find("ul").all("li")
|
||||
resultSubEntries = resultEntry.find('ul').all('li')
|
||||
linkName1 = getLinkName(newPaper1)
|
||||
expect(resultSubEntries[0]).to have_link(linkName1, href: newPaper1.url)
|
||||
linkName2 = getLinkName(newPaper1Change)
|
||||
|
@ -155,85 +155,84 @@ RSpec.feature "Basic search", type: :feature, elasticsearch: true do
|
|||
end
|
||||
|
||||
scenario "Finds 'Testen' with search 'Test'" do
|
||||
paper = FactoryBot.create(:paper, name: "Testen")
|
||||
paper = FactoryBot.create(:paper, name: 'Testen')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Test"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Test' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds 'Test' with search 'Testen'" do
|
||||
paper = FactoryBot.create(:paper, name: "Test")
|
||||
paper = FactoryBot.create(:paper, name: 'Test')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Testen"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Testen' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds 'Fahrräderverleih' with search 'Fahrrad'" do
|
||||
paper = FactoryBot.create(:paper, name: "Fahrräderverleih")
|
||||
paper = FactoryBot.create(:paper, name: 'Fahrräderverleih')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Fahrrad"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Fahrrad' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds 'Fahrräderverleih' with search 'Fahrräder'" do
|
||||
paper = FactoryBot.create(:paper, name: "Fahrräderverleih")
|
||||
paper = FactoryBot.create(:paper, name: 'Fahrräderverleih')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Fahrräder"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Fahrräder' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds 'Fahrräderverleih' with search 'Verleih'" do
|
||||
paper = FactoryBot.create(:paper, name: "Fahrräderverleih")
|
||||
paper = FactoryBot.create(:paper, name: 'Fahrräderverleih')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Verleih"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Verleih' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds 'Fahrräderverleih' with search 'Autoverleih'" do
|
||||
paper = FactoryBot.create(:paper, name: "Fahrräderverleih")
|
||||
paper = FactoryBot.create(:paper, name: 'Fahrräderverleih')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Autoverleih"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Autoverleih' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(paper.name)
|
||||
end
|
||||
|
||||
scenario "Finds no 'Fahrrad' with search 'Rad'" do
|
||||
paper = FactoryBot.create(:paper, name: "Fahrrad")
|
||||
paper = FactoryBot.create(:paper, name: 'Fahrrad')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "Rad"}
|
||||
expect(page).to have_content("0 Dokumente in der Datenbank")
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Rad' }
|
||||
expect(page).to have_content('0 Dokumente in der Datenbank')
|
||||
end
|
||||
|
||||
scenario "Papers with reference id having slash is escaped" do
|
||||
scenario 'Papers with reference id having slash is escaped' do
|
||||
mainPaper = FactoryBot.create(:paper, published_at: '2016-12-19T19:00:00',
|
||||
name: "Opendata als default", reference: "VI-00768/14")
|
||||
name: 'Opendata als default', reference: 'VI-00768/14')
|
||||
newPaper = FactoryBot.create(:paper, published_at: '2016-12-23T12:00:00',
|
||||
name: "Opendata als optional", reference: "VI-00768/14-ÄA-01")
|
||||
name: 'Opendata als optional', reference: 'VI-00768/14-ÄA-01')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
visit search_path body: "leipzig", paper_search: {query: "default"}
|
||||
expect(page).to have_content("1 Dokument in der Datenbank")
|
||||
resultEntry = page.find("li.search-result", match: :first)
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'default' }
|
||||
expect(page).to have_content('1 Dokument in der Datenbank')
|
||||
resultEntry = page.find('li.search-result', match: :first)
|
||||
expect(resultEntry).to have_content(mainPaper.name)
|
||||
|
||||
resultSubEntry1 = resultEntry.find("li.current", match: :first)
|
||||
resultSubEntry1 = resultEntry.find('li.current', match: :first)
|
||||
linkName1 = getLinkName(mainPaper)
|
||||
expect(resultSubEntry1).to have_link(linkName1, href: mainPaper.url)
|
||||
|
||||
resultSubEntries = resultEntry.find("ul").all("li")
|
||||
resultSubEntries = resultEntry.find('ul').all('li')
|
||||
linkName2 = getLinkName(newPaper)
|
||||
expect(resultSubEntries[0]).to have_link(linkName2, href: newPaper.url)
|
||||
expect(resultSubEntries[1]).to have_link(linkName1, href: mainPaper.url)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,69 +1,65 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.feature "Search filters", type: :feature, elasticsearch: true do
|
||||
|
||||
RSpec.feature 'Search filters', type: :feature, elasticsearch: true do
|
||||
before(:each) do
|
||||
@antrag = FactoryBot.create(:paper,
|
||||
paper_type: "Antrag",
|
||||
name: "Mehr Spielplätze in Leipzig",
|
||||
originator: "Dezernat Jugend, Soziales, Gesundheit und Schule"
|
||||
)
|
||||
paper_type: 'Antrag',
|
||||
name: 'Mehr Spielplätze in Leipzig',
|
||||
originator: 'Dezernat Jugend, Soziales, Gesundheit und Schule')
|
||||
@anfrage = FactoryBot.create(:paper,
|
||||
paper_type: "Anfrage",
|
||||
originator: "CDU-Fraktion"
|
||||
)
|
||||
paper_type: 'Anfrage',
|
||||
originator: 'CDU-Fraktion')
|
||||
@vorlage_1 = FactoryBot.create(:paper,
|
||||
paper_type: "Vorlage",
|
||||
name: "Zustand der Spielplätze",
|
||||
originator: "Dezernat Jugend, Soziales, Gesundheit und Schule"
|
||||
)
|
||||
paper_type: 'Vorlage',
|
||||
name: 'Zustand der Spielplätze',
|
||||
originator: 'Dezernat Jugend, Soziales, Gesundheit und Schule')
|
||||
@vorlage_2 = FactoryBot.create(:paper,
|
||||
paper_type: "Vorlage",
|
||||
name: "Mehr Ampeln in der Innenstadt",
|
||||
originator: "Oberbürgermeister"
|
||||
)
|
||||
paper_type: 'Vorlage',
|
||||
name: 'Mehr Ampeln in der Innenstadt',
|
||||
originator: 'Oberbürgermeister')
|
||||
Paper.__elasticsearch__.refresh_index!
|
||||
end
|
||||
|
||||
scenario "Displays paper types and their respective count witin the search results" do
|
||||
visit search_path body: "leipzig"
|
||||
paper_type_filter = page.find("select#paper_search_paper_type")
|
||||
expect(paper_type_filter).to have_css("option", text: "Antrag (1)")
|
||||
expect(paper_type_filter).to have_css("option", text: "Anfrage (1)")
|
||||
expect(paper_type_filter).to have_css("option", text: "Vorlage (2)")
|
||||
scenario 'Displays paper types and their respective count witin the search results' do
|
||||
visit search_path body: 'leipzig'
|
||||
paper_type_filter = page.find('select#paper_search_paper_type')
|
||||
expect(paper_type_filter).to have_css('option', text: 'Antrag (1)')
|
||||
expect(paper_type_filter).to have_css('option', text: 'Anfrage (1)')
|
||||
expect(paper_type_filter).to have_css('option', text: 'Vorlage (2)')
|
||||
|
||||
visit search_path body: "leipzig", paper_search: {query: "Spielplätze"}
|
||||
paper_type_filter = page.find("select#paper_search_paper_type")
|
||||
expect(paper_type_filter).to have_css("option", text: "Antrag (1)")
|
||||
expect(paper_type_filter).not_to have_css("option", text: "Anfrage")
|
||||
expect(paper_type_filter).to have_css("option", text: "Vorlage (1)")
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Spielplätze' }
|
||||
paper_type_filter = page.find('select#paper_search_paper_type')
|
||||
expect(paper_type_filter).to have_css('option', text: 'Antrag (1)')
|
||||
expect(paper_type_filter).not_to have_css('option', text: 'Anfrage')
|
||||
expect(paper_type_filter).to have_css('option', text: 'Vorlage (1)')
|
||||
end
|
||||
|
||||
scenario "Filtering by paper type", js: true do
|
||||
visit search_path body: "leipzig"
|
||||
expect(page).to have_css("li.search-result", count: 4)
|
||||
select "Antrag (1)", from: "Typ"
|
||||
expect(page).to have_css("li.search-result", count: 1, text: "Spielplätze")
|
||||
scenario 'Filtering by paper type', js: true do
|
||||
visit search_path body: 'leipzig'
|
||||
expect(page).to have_css('li.search-result', count: 4)
|
||||
select 'Antrag (1)', from: 'Typ'
|
||||
expect(page).to have_css('li.search-result', count: 1, text: 'Spielplätze')
|
||||
end
|
||||
|
||||
scenario "Displays originators and their respective count within the search results" do
|
||||
visit search_path body: "leipzig"
|
||||
originator_filter = page.find("select#paper_search_originator")
|
||||
expect(originator_filter).to have_css("option", text: "CDU-Fraktion (1)")
|
||||
expect(originator_filter).to have_css("option", text: "Dezernat Jugend, Soziales, Gesundheit und Schule (2)")
|
||||
expect(originator_filter).to have_css("option", text: "Oberbürgermeister (1)")
|
||||
scenario 'Displays originators and their respective count within the search results' do
|
||||
visit search_path body: 'leipzig'
|
||||
originator_filter = page.find('select#paper_search_originator')
|
||||
expect(originator_filter).to have_css('option', text: 'CDU-Fraktion (1)')
|
||||
expect(originator_filter).to have_css('option', text: 'Dezernat Jugend, Soziales, Gesundheit und Schule (2)')
|
||||
expect(originator_filter).to have_css('option', text: 'Oberbürgermeister (1)')
|
||||
|
||||
visit search_path body: "leipzig", paper_search: {query: "Spielplätze"}
|
||||
originator_filter = page.find("select#paper_search_originator")
|
||||
expect(originator_filter).to have_css("option", text: "Dezernat Jugend, Soziales, Gesundheit und Schule (2)")
|
||||
expect(originator_filter).not_to have_css("option", text: "Oberbürgermeister")
|
||||
visit search_path body: 'leipzig', paper_search: { query: 'Spielplätze' }
|
||||
originator_filter = page.find('select#paper_search_originator')
|
||||
expect(originator_filter).to have_css('option', text: 'Dezernat Jugend, Soziales, Gesundheit und Schule (2)')
|
||||
expect(originator_filter).not_to have_css('option', text: 'Oberbürgermeister')
|
||||
end
|
||||
|
||||
scenario "Filtering by originator", js: true do
|
||||
visit search_path body: "leipzig"
|
||||
expect(page).to have_css("li.search-result", count: 4)
|
||||
select "Oberbürgermeister (1)", from: "Einreicher"
|
||||
expect(page).to have_css("li.search-result", count: 1, text: "Ampeln")
|
||||
scenario 'Filtering by originator', js: true do
|
||||
visit search_path body: 'leipzig'
|
||||
expect(page).to have_css('li.search-result', count: 4)
|
||||
select 'Oberbürgermeister (1)', from: 'Einreicher'
|
||||
expect(page).to have_css('li.search-result', count: 1, text: 'Ampeln')
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,22 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Paper do
|
||||
context "Validations" do
|
||||
context 'Validations' do
|
||||
it { should validate_presence_of(:name) }
|
||||
it { should validate_length_of(:name).is_at_most(1000) }
|
||||
|
||||
it { should validate_length_of(:name).is_at_most(1000) }
|
||||
|
||||
it { should validate_presence_of(:url) }
|
||||
it { should validate_length_of(:url).is_at_most(1000) }
|
||||
|
||||
context "URL uniqueness" do
|
||||
|
||||
context 'URL uniqueness' do
|
||||
subject { FactoryBot.build(:paper) }
|
||||
it { should validate_uniqueness_of(:url) }
|
||||
end
|
||||
|
||||
it "validate url format sane" do
|
||||
expected_error = "ist keine gültige URL"
|
||||
paper = FactoryBot.build(:paper, url: "wtf")
|
||||
expect(paper).not_to be_valid, "Expected paper to not be valid with invalid URL"
|
||||
|
||||
it 'validate url format sane' do
|
||||
expected_error = 'ist keine gültige URL'
|
||||
paper = FactoryBot.build(:paper, url: 'wtf')
|
||||
expect(paper).not_to be_valid, 'Expected paper to not be valid with invalid URL'
|
||||
expect(paper.errors[:url]).not_to be_empty
|
||||
expect(paper.errors[:url]).to include(expected_error), "Expected #{paper.errors[:url]} to include \"#{expected_error}\""
|
||||
end
|
||||
|
@ -36,11 +38,11 @@ RSpec.describe Paper do
|
|||
it { should validate_presence_of(:paper_type) }
|
||||
it { should validate_length_of(:paper_type).is_at_most(50) }
|
||||
|
||||
context "published_at" do
|
||||
context 'published_at' do
|
||||
it { should validate_presence_of(:published_at) }
|
||||
it "validate date is parseable" do
|
||||
expected_error = "ist kein gültiges Datum"
|
||||
paper = FactoryBot.build(:paper, published_at: "fubar")
|
||||
it 'validate date is parseable' do
|
||||
expected_error = 'ist kein gültiges Datum'
|
||||
paper = FactoryBot.build(:paper, published_at: 'fubar')
|
||||
expect(paper).not_to be_valid
|
||||
expect(paper.errors[:published_at]).not_to be_empty
|
||||
expect(paper.errors[:published_at]).to include(expected_error), "Expected #{paper.errors[:published_at]} to include \"#{expected_error}\""
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
require File.expand_path('../config/environment', __dir__)
|
||||
# Prevent database truncation if the environment is production
|
||||
abort("The Rails environment is running in production mode!") if Rails.env.production?
|
||||
if Rails.env.production?
|
||||
abort('The Rails environment is running in production mode!')
|
||||
end
|
||||
require 'spec_helper'
|
||||
require 'rspec/rails'
|
||||
# Add additional requires below this line. Rails is not loaded until this point!
|
||||
|
@ -20,7 +24,7 @@ require 'rspec/rails'
|
|||
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
||||
# require only the support files necessary.
|
||||
#
|
||||
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
||||
Dir[Rails.root.join('spec/support/**/*.rb')].sort.each { |f| require f }
|
||||
|
||||
# Checks for pending migrations before tests are run.
|
||||
# If you are not using ActiveRecord, you can remove this line.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'coveralls'
|
||||
Coveralls.wear!('rails')
|
||||
|
||||
|
@ -43,53 +45,51 @@ RSpec.configure do |config|
|
|||
mocks.verify_partial_doubles = true
|
||||
end
|
||||
|
||||
# The settings below are suggested to provide a good initial experience
|
||||
# with RSpec, but feel free to customize to your heart's content.
|
||||
=begin
|
||||
# These two settings work together to allow you to limit a spec run
|
||||
# to individual examples or groups you care about by tagging them with
|
||||
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
||||
# get run.
|
||||
config.filter_run :focus
|
||||
config.run_all_when_everything_filtered = true
|
||||
|
||||
# Allows RSpec to persist some state between runs in order to support
|
||||
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
||||
# you configure your source control system to ignore this file.
|
||||
config.example_status_persistence_file_path = "spec/examples.txt"
|
||||
|
||||
# Limits the available syntax to the non-monkey patched syntax that is
|
||||
# recommended. For more details, see:
|
||||
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
||||
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
||||
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
||||
config.disable_monkey_patching!
|
||||
|
||||
# Many RSpec users commonly either run the entire suite or an individual
|
||||
# file, and it's useful to allow more verbose output when running an
|
||||
# individual spec file.
|
||||
if config.files_to_run.one?
|
||||
# Use the documentation formatter for detailed output,
|
||||
# unless a formatter has already been configured
|
||||
# (e.g. via a command-line flag).
|
||||
config.default_formatter = 'doc'
|
||||
end
|
||||
|
||||
# Print the 10 slowest examples and example groups at the
|
||||
# end of the spec run, to help surface which specs are running
|
||||
# particularly slow.
|
||||
config.profile_examples = 10
|
||||
|
||||
# Run specs in random order to surface order dependencies. If you find an
|
||||
# order dependency and want to debug it, you can fix the order by providing
|
||||
# the seed, which is printed after each run.
|
||||
# --seed 1234
|
||||
config.order = :random
|
||||
|
||||
# Seed global randomization in this process using the `--seed` CLI option.
|
||||
# Setting this allows you to use `--seed` to deterministically reproduce
|
||||
# test failures related to randomization by passing the same `--seed` value
|
||||
# as the one that triggered the failure.
|
||||
Kernel.srand config.seed
|
||||
=end
|
||||
# The settings below are suggested to provide a good initial experience
|
||||
# with RSpec, but feel free to customize to your heart's content.
|
||||
# # These two settings work together to allow you to limit a spec run
|
||||
# # to individual examples or groups you care about by tagging them with
|
||||
# # `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
||||
# # get run.
|
||||
# config.filter_run :focus
|
||||
# config.run_all_when_everything_filtered = true
|
||||
#
|
||||
# # Allows RSpec to persist some state between runs in order to support
|
||||
# # the `--only-failures` and `--next-failure` CLI options. We recommend
|
||||
# # you configure your source control system to ignore this file.
|
||||
# config.example_status_persistence_file_path = "spec/examples.txt"
|
||||
#
|
||||
# # Limits the available syntax to the non-monkey patched syntax that is
|
||||
# # recommended. For more details, see:
|
||||
# # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
||||
# # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
||||
# # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
||||
# config.disable_monkey_patching!
|
||||
#
|
||||
# # Many RSpec users commonly either run the entire suite or an individual
|
||||
# # file, and it's useful to allow more verbose output when running an
|
||||
# # individual spec file.
|
||||
# if config.files_to_run.one?
|
||||
# # Use the documentation formatter for detailed output,
|
||||
# # unless a formatter has already been configured
|
||||
# # (e.g. via a command-line flag).
|
||||
# config.default_formatter = 'doc'
|
||||
# end
|
||||
#
|
||||
# # Print the 10 slowest examples and example groups at the
|
||||
# # end of the spec run, to help surface which specs are running
|
||||
# # particularly slow.
|
||||
# config.profile_examples = 10
|
||||
#
|
||||
# # Run specs in random order to surface order dependencies. If you find an
|
||||
# # order dependency and want to debug it, you can fix the order by providing
|
||||
# # the seed, which is printed after each run.
|
||||
# # --seed 1234
|
||||
# config.order = :random
|
||||
#
|
||||
# # Seed global randomization in this process using the `--seed` CLI option.
|
||||
# # Setting this allows you to use `--seed` to deterministically reproduce
|
||||
# # test failures related to randomization by passing the same `--seed` value
|
||||
# # as the one that triggered the failure.
|
||||
# Kernel.srand config.seed
|
||||
end
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'capybara/apparition'
|
||||
Capybara.register_driver :apparition do |app|
|
||||
Capybara::Apparition::Driver.new(
|
||||
app,
|
||||
headless: true,
|
||||
browser_options: [ :no_sandbox, disable_features: 'VizDisplayCompositor']
|
||||
)
|
||||
Capybara::Apparition::Driver.new(
|
||||
app,
|
||||
headless: true,
|
||||
browser_options: [:no_sandbox, disable_features: 'VizDisplayCompositor']
|
||||
)
|
||||
end
|
||||
|
||||
Capybara.javascript_driver = :apparition
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.before(:suite) do
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
|
@ -18,5 +20,4 @@ RSpec.configure do |config|
|
|||
config.append_after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.before :each, elasticsearch: true do
|
||||
Paper.__elasticsearch__.create_index!(force: true)
|
||||
Elasticsearch::Model.client.cluster.health wait_for_status: "yellow"
|
||||
Elasticsearch::Model.client.cluster.health wait_for_status: 'yellow'
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.include FactoryBot::Syntax::Methods
|
||||
end
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
Shoulda::Matchers.configure do |config|
|
||||
config.integrate do |with|
|
||||
with.test_framework :rspec
|
||||
|
|
Loading…
Reference in a new issue