blacklight 4.3.0 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -6
- data/Gemfile +5 -0
- data/README.md +1 -1
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/autofocus.js +16 -0
- data/app/assets/javascripts/blacklight/blacklight.js +1 -0
- data/app/assets/javascripts/blacklight/bookmark_toggle.js +2 -5
- data/app/assets/javascripts/blacklight/checkbox_submit.js +3 -6
- data/app/assets/javascripts/blacklight/core.js +24 -1
- data/app/assets/javascripts/blacklight/css_dropdowns.js +2 -2
- data/app/assets/javascripts/blacklight/facet_expand_contract.js +4 -3
- data/app/assets/javascripts/blacklight/lightbox_dialog.js +7 -1
- data/app/assets/javascripts/blacklight/search_context.js +1 -1
- data/app/assets/javascripts/blacklight/select_submit.js +1 -1
- data/app/assets/javascripts/blacklight/zebra_stripe.js +1 -1
- data/app/assets/stylesheets/blacklight/_blacklight_base.css.scss +1 -0
- data/app/assets/stylesheets/blacklight/_catalog.css.scss +5 -0
- data/app/assets/stylesheets/blacklight/_facets.css.scss +6 -0
- data/app/assets/stylesheets/blacklight/_group.css.scss +14 -0
- data/app/assets/stylesheets/blacklight/blacklight_defaults.css.scss +1 -0
- data/app/controllers/bookmarks_controller.rb +2 -2
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +41 -24
- data/app/helpers/blacklight/catalog_helper_behavior.rb +48 -28
- data/app/helpers/blacklight/facets_helper_behavior.rb +9 -75
- data/app/models/record_mailer.rb +1 -16
- data/app/views/bookmarks/index.html.erb +2 -0
- data/app/views/catalog/_bookmark_control.html.erb +3 -4
- data/app/views/catalog/_document.html.erb +2 -1
- data/app/views/catalog/_document_header.html.erb +6 -3
- data/app/views/catalog/_email_form.html.erb +0 -7
- data/app/views/catalog/_facet_layout.html.erb +1 -1
- data/app/views/catalog/_group_default.html.erb +12 -0
- data/app/views/catalog/_index_default.html.erb +1 -1
- data/app/views/catalog/_opensearch_response_metadata.html.erb +2 -3
- data/app/views/catalog/_paginate_compact.html.erb +2 -2
- data/app/views/catalog/_results_pagination.html.erb +2 -2
- data/app/views/catalog/_search_form.html.erb +1 -1
- data/app/views/catalog/_sms_form.html.erb +1 -21
- data/app/views/catalog/_thumbnail_default.html.erb +5 -0
- data/app/views/catalog/email_sent.html.erb +9 -0
- data/app/views/catalog/index.atom.builder +7 -8
- data/app/views/catalog/index.html.erb +6 -3
- data/app/views/catalog/librarian_view.html.erb +1 -1
- data/app/views/catalog/sms_sent.html.erb +9 -0
- data/app/views/feedback/complete.html.erb +2 -0
- data/app/views/feedback/show.html.erb +7 -5
- data/app/views/kaminari/blacklight_compact/_paginator.html.erb +1 -1
- data/app/views/layouts/blacklight.html.erb +1 -2
- data/app/views/saved_searches/index.html.erb +2 -0
- data/app/views/search_history/index.html.erb +1 -1
- data/blacklight.gemspec +1 -1
- data/config/locales/blacklight.en.yml +11 -0
- data/config/locales/blacklight.fr.yml +15 -1
- data/gemfiles/rails3.gemfile +7 -0
- data/gemfiles/rails4.gemfile +7 -0
- data/lib/blacklight.rb +1 -0
- data/lib/blacklight/catalog.rb +101 -56
- data/lib/blacklight/configuration.rb +1 -1
- data/lib/blacklight/controller.rb +7 -4
- data/lib/blacklight/facet.rb +79 -0
- data/lib/blacklight/routes.rb +0 -1
- data/lib/blacklight/solr/document.rb +4 -0
- data/lib/blacklight/solr/document/marc_export.rb +1 -1
- data/lib/blacklight/solr_helper.rb +39 -8
- data/lib/blacklight/solr_response.rb +35 -3
- data/lib/blacklight/solr_response/facets.rb +4 -0
- data/lib/blacklight/solr_response/group.rb +33 -0
- data/lib/blacklight/solr_response/group_response.rb +49 -0
- data/lib/blacklight/solr_response/pagination_methods.rb +27 -0
- data/lib/blacklight/user.rb +30 -32
- data/lib/generators/blacklight/assets_generator.rb +3 -1
- data/lib/generators/blacklight/blacklight_generator.rb +28 -125
- data/lib/generators/blacklight/marc_generator.rb +66 -0
- data/lib/generators/blacklight/models_generator.rb +113 -0
- data/lib/generators/blacklight/templates/alternate_controller.rb +9 -0
- data/lib/generators/blacklight/templates/config/solr.yml +0 -2
- data/lib/generators/blacklight/templates/solr_document.rb +1 -13
- data/lib/railties/all_tests.rake +5 -8
- data/spec/controllers/catalog_controller_spec.rb +185 -113
- data/spec/features/alternate_controller_spec.rb +34 -0
- data/spec/features/bookmarks_spec.rb +58 -0
- data/spec/features/did_you_mean_spec.rb +135 -0
- data/spec/features/librarian_view_spec.rb +13 -0
- data/spec/features/record_view_spec.rb +37 -0
- data/spec/features/saved_searches_spec.rb +47 -0
- data/spec/features/search_filters_spec.rb +137 -0
- data/spec/features/search_history_spec.rb +75 -0
- data/spec/features/search_pagination_spec.rb +91 -0
- data/spec/features/search_results_spec.rb +68 -0
- data/spec/features/search_sort_spec.rb +20 -0
- data/spec/features/search_spec.rb +108 -0
- data/spec/helpers/blacklight_helper_spec.rb +45 -2
- data/spec/helpers/catalog_helper_spec.rb +134 -1
- data/spec/helpers/facets_helper_spec.rb +8 -0
- data/spec/lib/blacklight/solr_response/group_response_spec.rb +78 -0
- data/spec/lib/blacklight/solr_response/group_spec.rb +70 -0
- data/spec/lib/blacklight_solr_response_spec.rb +11 -5
- data/spec/lib/blacklight_user_spec.rb +22 -41
- data/spec/lib/solr_helper_spec.rb +73 -1
- data/spec/models/record_mailer_spec.rb +3 -3
- data/spec/models/{solr_docment_spec.rb → solr_document_spec.rb} +1 -1
- data/spec/spec_helper.rb +0 -1
- data/spec/support/features.rb +7 -0
- data/spec/support/features/session_helpers.rb +22 -0
- data/spec/test_app_templates/Gemfile.extra +0 -4
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -6
- data/spec/test_app_templates/lib/tasks/blacklight_test_app.rake +1 -9
- data/spec/views/catalog/_facets.html.erb_spec.rb +2 -1
- data/tasks/blacklight.rake +0 -10
- metadata +49 -58
- data/features/bookmarks.feature +0 -68
- data/features/did_you_mean.feature +0 -123
- data/features/librarian_view.feature +0 -18
- data/features/record_view.feature +0 -40
- data/features/saved_searches.feature +0 -49
- data/features/search.feature +0 -83
- data/features/search_filters.feature +0 -119
- data/features/search_history.feature +0 -85
- data/features/search_pagination.feature +0 -53
- data/features/search_results.feature +0 -61
- data/features/search_sort.feature +0 -27
- data/features/step_definitions/bookmarks_steps.rb +0 -6
- data/features/step_definitions/error_steps.rb +0 -5
- data/features/step_definitions/general_steps.rb +0 -50
- data/features/step_definitions/record_view_steps.rb +0 -12
- data/features/step_definitions/saved_searches_steps.rb +0 -19
- data/features/step_definitions/search_facets_steps.rb +0 -29
- data/features/step_definitions/search_history_steps.rb +0 -9
- data/features/step_definitions/search_pagination_steps.rb +0 -29
- data/features/step_definitions/search_result_steps.rb +0 -115
- data/features/step_definitions/search_steps.rb +0 -118
- data/features/step_definitions/user_steps.rb +0 -5
- data/features/step_definitions/web_steps.rb +0 -217
- data/features/support/env.rb +0 -65
- data/features/support/paths.rb +0 -48
- data/features/support/selectors.rb +0 -40
- data/lib/railties/blacklight_cucumber.rake +0 -126
- data/lib/solrmarc.log.1 +0 -854
@@ -1,53 +0,0 @@
|
|
1
|
-
@search_pagination
|
2
|
-
Feature: Search Pagination
|
3
|
-
In order to find lower ranked documents
|
4
|
-
As a user
|
5
|
-
I want to be able to page through search results and be able to choose how
|
6
|
-
many documents to display per page
|
7
|
-
|
8
|
-
Background:
|
9
|
-
Given the application is configured to have per page with values "10, 20, 50"
|
10
|
-
|
11
|
-
Scenario: Results Page Supports Paging
|
12
|
-
Given I am on the home page
|
13
|
-
When I fill in "q" with ""
|
14
|
-
And I press "search"
|
15
|
-
Then I should see "1 - 10 of"
|
16
|
-
When I follow "Next »"
|
17
|
-
Then I should see "11 - 20 of"
|
18
|
-
When I follow "« Previous"
|
19
|
-
Then I should see "1 - 10 of"
|
20
|
-
|
21
|
-
Scenario: Results Page Has Per Page Available
|
22
|
-
Given I am on the home page
|
23
|
-
When I fill in "q" with ""
|
24
|
-
And I press "search"
|
25
|
-
Then I should see "per page"
|
26
|
-
And I should see the per_page dropdown with values "10, 20, 50"
|
27
|
-
|
28
|
-
Scenario: Results Page Can Display 20 Items Per Page
|
29
|
-
Given I am on the home page
|
30
|
-
And I fill in "q" with ""
|
31
|
-
When I press "search"
|
32
|
-
Then I should see "1 - 10 of"
|
33
|
-
When I show 20 per page
|
34
|
-
Then I should see "1 - 20 of"
|
35
|
-
|
36
|
-
Scenario: Application Can Be Configured for Other Per Page Values
|
37
|
-
Given the application is configured to have per page with values "15, 30"
|
38
|
-
And I am on the home page
|
39
|
-
When I fill in "q" with ""
|
40
|
-
And I press "search"
|
41
|
-
Then I should see the per_page dropdown with values "15, 30"
|
42
|
-
And I should see "1 - 15 of"
|
43
|
-
When I show 30 per page
|
44
|
-
Then I should see "1 - 30 of"
|
45
|
-
|
46
|
-
Scenario: Page Offset Resets to 1 When Changing Per Page
|
47
|
-
Given I am on the home page
|
48
|
-
And I fill in "q" with ""
|
49
|
-
When I press "search"
|
50
|
-
And I follow "Next »"
|
51
|
-
Then I should see "11 - 20 of"
|
52
|
-
When I show 20 per page
|
53
|
-
Then I should see "1 - 20 of"
|
@@ -1,61 +0,0 @@
|
|
1
|
-
@search
|
2
|
-
Feature: Search Results
|
3
|
-
In order to find documents
|
4
|
-
As a user
|
5
|
-
I want to enter terms, select fields, and select number of results per page
|
6
|
-
|
7
|
-
Scenario: Empty query
|
8
|
-
Given I am on the catalog page
|
9
|
-
When I fill in the search box with ""
|
10
|
-
And I press "search"
|
11
|
-
Then I should get at least 30 results
|
12
|
-
And I should get exactly 30 results
|
13
|
-
And I should get at most 30 results
|
14
|
-
And I should get id "2007020969" in the results
|
15
|
-
And I should have more results than a search for "korea"
|
16
|
-
|
17
|
-
Scenario: "inmul" query
|
18
|
-
Given I am on the catalog page
|
19
|
-
When I fill in the search box with "inmul"
|
20
|
-
And I press "search"
|
21
|
-
Then I should get exactly 1 result
|
22
|
-
And I should get id "77826928" in the results
|
23
|
-
And I should not get id "00282214" in the results
|
24
|
-
And I should have fewer results than a search for ""
|
25
|
-
|
26
|
-
Scenario: Diacritics stripping
|
27
|
-
Given I am on the catalog page
|
28
|
-
When I fill in the search box with "inmül"
|
29
|
-
And I press "search"
|
30
|
-
Then I should have the same number of results as a search for "inmul"
|
31
|
-
|
32
|
-
|
33
|
-
Scenario: case-insensitive
|
34
|
-
Given I am on the catalog page
|
35
|
-
When I fill in the search box with "inmul"
|
36
|
-
And I press "search"
|
37
|
-
Then I should have the same number of results as a search for "INMUL"
|
38
|
-
|
39
|
-
Scenario: Relevancy ordering
|
40
|
-
Given I am on the catalog page
|
41
|
-
When I fill in the search box with "Korea"
|
42
|
-
And I press "search"
|
43
|
-
Then I should get id "77826928" in the first 5 results
|
44
|
-
And I should get id "77826928" before id "94120425"
|
45
|
-
And I should get id "77826928" and id "94120425" no more than 5 positions from each other
|
46
|
-
|
47
|
-
Scenario: Excluded items
|
48
|
-
Given I am on the catalog page
|
49
|
-
When I fill in the search box with "Korea"
|
50
|
-
And I press "search"
|
51
|
-
Then I should not get id "94120425" in the first 1 result
|
52
|
-
|
53
|
-
Scenario: Top 5 results
|
54
|
-
Given I am on the catalog page
|
55
|
-
When I fill in the search box with "Korea"
|
56
|
-
And I press "search"
|
57
|
-
Then I should get at least 1 of these ids in the first 5 results: "77826928,94120425"
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
@@ -1,27 +0,0 @@
|
|
1
|
-
@search_sort
|
2
|
-
Feature: Search Sort
|
3
|
-
In order to sort searches
|
4
|
-
As a user
|
5
|
-
I want select a sort field and have the search results reordered by that field
|
6
|
-
|
7
|
-
Scenario: Sort on facet results with no search terms
|
8
|
-
Given I am on the home page
|
9
|
-
When I follow "English"
|
10
|
-
Then I should see "Sort by"
|
11
|
-
# 2009-08-25 I don't know why this isn't working ... Naomi.
|
12
|
-
# And I should see select list "select#sort" with "relevance" selected
|
13
|
-
When I sort by "title"
|
14
|
-
Then I should see "Sort by"
|
15
|
-
And I should see the sort list with "title" selected
|
16
|
-
|
17
|
-
Scenario: Sort on result set from fielded search
|
18
|
-
Given I am on the home page
|
19
|
-
And I fill in "q" with "bod"
|
20
|
-
And I select "Title" from "search_field"
|
21
|
-
And I press "search"
|
22
|
-
Then I should see "Sort by"
|
23
|
-
When I sort by "title"
|
24
|
-
Then I should see "Sort by"
|
25
|
-
And I should see select list "select#search_field" with "Title" selected
|
26
|
-
And I should see the sort list with "title" selected
|
27
|
-
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
When /^I follow "([^\"]*)" in "([^\"]*)"$/ do |link, scope|
|
3
|
-
within(scope) do
|
4
|
-
click_link(link)
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
Then /^I should see a stylesheet/ do
|
9
|
-
page.should have_selector("link[rel=stylesheet]")
|
10
|
-
end
|
11
|
-
|
12
|
-
Then /I should see "(.*)" (at least|at most|exactly) (.*) times?$/i do |target, comparator, expected_num|
|
13
|
-
actual_num = page.split(target).length - 1
|
14
|
-
case comparator
|
15
|
-
when "at least"
|
16
|
-
actual_num.should >= expected_num.to_i
|
17
|
-
when "at most"
|
18
|
-
actual_num.should <= expected_num.to_i
|
19
|
-
when "exactly"
|
20
|
-
actual_num.should == expected_num.to_i
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Then /I should see a "(.*)" element with "(.*)" = "(.*)" (at least|at most|exactly) (.*) times?$/i do |target, type, selector,comparator, expected_num|
|
25
|
-
actual_num = page.all("#{target}[#{type}=\"#{selector}\"]").length
|
26
|
-
case comparator
|
27
|
-
when "at least"
|
28
|
-
actual_num.should >= expected_num.to_i
|
29
|
-
when "at most"
|
30
|
-
actual_num.should <= expected_num.to_i
|
31
|
-
when "exactly"
|
32
|
-
actual_num.should == expected_num.to_i
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
Then /^I (should not|should) see an? "([^\"]*)" element with an? "([^\"]*)" attribute of "([^\"]*)"$/ do |bool,elem,attribute,value|
|
37
|
-
if bool == "should not"
|
38
|
-
page.should_not have_selector("#{elem}[#{attribute}=#{value}]")
|
39
|
-
else
|
40
|
-
page.should have_selector("#{elem}[#{attribute}=#{value}]")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
Then /^I (should not|should) see an? "([^\"]*)" element with an? "([^\"]*)" attribute of "([^\"]*)" and an? "([^\"]*)" attribute of "([^\"]*)"$/ do |bool,elem,attribute,value,attribute2,value2|
|
45
|
-
if bool == "should not"
|
46
|
-
page.should_not have_selector("#{elem}[#{attribute}=#{value}][#{attribute2}=#{value2}]")
|
47
|
-
else
|
48
|
-
page.should have_selector("#{elem}[#{attribute}=#{value}][#{attribute2}=#{value2}]")
|
49
|
-
end
|
50
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
Then /^I (should|should not) see an? "([^\"]*)" element containing "([^\"]*)"$/ do |bool,elem,content|
|
3
|
-
if bool == "should"
|
4
|
-
page.should have_xpath("//#{elem}[text()='#{content}']")
|
5
|
-
else
|
6
|
-
page.should have_no_xpath("//#{elem}[text()='#{content}']")
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
Then /^I should see link rel=alternate tags/ do
|
11
|
-
page.should have_selector("link[rel=alternate]")
|
12
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
Given /^I am logged in as "([^\"]*)"$/ do |login|
|
3
|
-
email = "#{login}@#{login}.com"
|
4
|
-
user = User.create(:email => email, :password => "password", :password_confirmation => "password")
|
5
|
-
visit new_user_session_path
|
6
|
-
fill_in("user_email", :with => email)
|
7
|
-
fill_in("user_password", :with => "password")
|
8
|
-
click_button("Sign in")
|
9
|
-
step 'I should see "Log Out"'
|
10
|
-
end
|
11
|
-
|
12
|
-
Given /^"([^\"]*)" has saved a search with term "([^\"]*)"$/ do |user, term|
|
13
|
-
user = User.find_by_email("#{user}@#{user}.com")
|
14
|
-
user.searches << Search.create(:query_params => {:q => term})
|
15
|
-
user.save!
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
# deprecated
|
3
|
-
Then /^I should see the applied filter "([^\"]*)" with the value "([^\"]*)"$/ do |filter, text|
|
4
|
-
page.should have_selector(".facet_limit") do |node|
|
5
|
-
node.should have_selector("h3", :text => filter)
|
6
|
-
node.should have_selector("span.selected", :text => text)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
Then /^I should see the applied facet "([^\"]*)" with the value "([^\"]*)"$/ do |filter, text|
|
11
|
-
page.should have_selector(".facet_limit") do |node|
|
12
|
-
node.should have_selector("h3", :text => filter)
|
13
|
-
node.should have_selector("span.selected", :text => text)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
Then /^I should see the facet "([^\"]*)" with the value "([^\"]*)"$/ do |filter, text|
|
18
|
-
page.should have_selector(".facet_limit") do |node|
|
19
|
-
node.should have_selector("h3", :text => filter)
|
20
|
-
node.should have_selector("a.label", :text => text)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Then /^the facet "([^\"]+)" should display$/ do |filter|
|
25
|
-
page.should have_selector(".facet_limit") do |node|
|
26
|
-
node.should have_selector("h3", :text => filter)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
Given /^the application is configured to have per page with values "([^\"]*)"$/ do |values|
|
3
|
-
values = values.split(", ")
|
4
|
-
CatalogController.blacklight_config[:per_page] = []
|
5
|
-
values.each do |value|
|
6
|
-
CatalogController.blacklight_config[:per_page] << value
|
7
|
-
end
|
8
|
-
CatalogController.blacklight_config[:default_solr_params][:rows] = values[0]
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
Then /^I should see a selectable list with per page choices$/ do
|
13
|
-
page.should have_selector("#per_page-dropdown")
|
14
|
-
end
|
15
|
-
|
16
|
-
Then /^I should see the per_page dropdown with values "(.*?)"$/ do |arg1|
|
17
|
-
page.should have_selector('#per_page-dropdown') do
|
18
|
-
labels = values.split(", ")
|
19
|
-
labels.each do |label|
|
20
|
-
with_tag('li', label)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
When /^I show (\d+) per page$/ do |value|
|
26
|
-
within('#per_page-dropdown .css-dropdown ul') do
|
27
|
-
click_link("#{value} per page")
|
28
|
-
end
|
29
|
-
end
|
@@ -1,115 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
#include Blacklight::SolrHelper
|
3
|
-
|
4
|
-
When /^I fill in the search box with "(.*?)"$/ do |query|
|
5
|
-
query.gsub!(/\\"/, '"')
|
6
|
-
# fill_in(:q, :with => query)
|
7
|
-
find('#q').set(query)
|
8
|
-
end
|
9
|
-
|
10
|
-
|
11
|
-
Then /^I should get (at least|at most|exactly) (\d+) results?$/i do |comparator, comparison_num|
|
12
|
-
number_of_records = get_number_of_results_from_page(page)
|
13
|
-
|
14
|
-
case comparator
|
15
|
-
when "at least"
|
16
|
-
number_of_records.should >= comparison_num.to_i
|
17
|
-
when "at most"
|
18
|
-
number_of_records.should <= comparison_num.to_i
|
19
|
-
when "exactly"
|
20
|
-
number_of_records.should == comparison_num.to_i
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
Then /^I should have (the same number of|fewer|more) results (?:than|as) a(?:n?) search for "(.*)"$/i do |comparator, query|
|
26
|
-
query.gsub!(/\\"/, '"')
|
27
|
-
number_of_records = get_number_of_results_from_page(page)
|
28
|
-
|
29
|
-
case comparator
|
30
|
-
when "the same number of"
|
31
|
-
get_number_of_results_for_query(query).should == number_of_records
|
32
|
-
when "fewer"
|
33
|
-
get_number_of_results_for_query(query).should > number_of_records
|
34
|
-
when "fewer"
|
35
|
-
get_number_of_results_for_query(query).should < number_of_records
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
Then /^I should get id "([^\"]+)" in the results$/i do |id|
|
40
|
-
page.should have_xpath("//a[contains(@href, #{id})]")
|
41
|
-
end
|
42
|
-
|
43
|
-
Then /^I should not get id "([^\"]+)" in the results$/i do |id|
|
44
|
-
page.should_not have_xpath("//a[contains(@href, #{id})]")
|
45
|
-
end
|
46
|
-
|
47
|
-
Then /^I should get id "([^\"]+)" in the first (\d+) results?$/i do |id, max_num|
|
48
|
-
pos = get_position_in_result_page(page, id)
|
49
|
-
pos.should_not == -1
|
50
|
-
pos.should < max_num.to_i
|
51
|
-
end
|
52
|
-
|
53
|
-
Then /^I should not get id "([^\"]+)" in the first (\d+) results?$/i do |id, max_num|
|
54
|
-
pos = get_position_in_result_page(page, id)
|
55
|
-
pos.should_not == -1
|
56
|
-
|
57
|
-
if pos > 0
|
58
|
-
pos.should >= max_num.to_i
|
59
|
-
else
|
60
|
-
pos.should == -1 if pos == -1
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
Then /^I should get id "([^\"]+)" before id "([^\"]+)"$/i do |id1, id2|
|
65
|
-
pos1 = get_position_in_result_page(page, id1)
|
66
|
-
pos2 = get_position_in_result_page(page, id2)
|
67
|
-
pos1.should_not == -1
|
68
|
-
pos2.should_not == -1
|
69
|
-
|
70
|
-
pos1.should < pos2
|
71
|
-
end
|
72
|
-
|
73
|
-
Then /^I should get id "([^\"]+)" and id "([^\"]+)" no more than (\d+) positions? from each other$/i do |id1, id2, limit|
|
74
|
-
|
75
|
-
pos1 = get_position_in_result_page(page, id1)
|
76
|
-
pos2 = get_position_in_result_page(page, id2)
|
77
|
-
pos1.should_not == -1
|
78
|
-
pos2.should_not == -1
|
79
|
-
|
80
|
-
(pos1 - pos2).abs.should <= limit.to_i
|
81
|
-
end
|
82
|
-
|
83
|
-
Then /^I should get at least (\d+) of these ids in the first (\d+) results: "([^\"]+)"$/i do |how_many, limit, id_string|
|
84
|
-
id_string.split(/,/).select do |id|
|
85
|
-
pos = get_position_in_result_page(page, id)
|
86
|
-
pos != -1 and pos < limit.to_i
|
87
|
-
end.length.should >= how_many.to_i
|
88
|
-
end
|
89
|
-
|
90
|
-
Then /^I (should not|should) see an? "([^\"]*)" element with an? "([^\"]*)" attribute of "([^\"]*)"$/ do |bool,elem,attribute,value|
|
91
|
-
if bool == "should not"
|
92
|
-
page.should_not have_selector("#{elem}[#{attribute}=#{value}]")
|
93
|
-
else
|
94
|
-
page.should have_selector("#{elem}[#{attribute}=#{value}]")
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def get_position_in_result_page(page, id)
|
99
|
-
i = -1
|
100
|
-
page.all(".index_title a").each_with_index do |link, idx|
|
101
|
-
i = (idx+1) if link['href'] =~ Regexp.new(Regexp.escape(id) + "$")
|
102
|
-
end
|
103
|
-
i.to_i
|
104
|
-
end
|
105
|
-
|
106
|
-
def get_number_of_results_for_query(query)
|
107
|
-
visit root_path
|
108
|
-
fill_in "q", :with => query
|
109
|
-
click_button "search"
|
110
|
-
get_number_of_results_from_page(page)
|
111
|
-
end
|
112
|
-
|
113
|
-
def get_number_of_results_from_page(page)
|
114
|
-
page.find("meta[name=totalResults]")['content'].to_i rescue 0
|
115
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
# User added
|
3
|
-
Then /^I should see a search field$/ do
|
4
|
-
page.should have_selector("input#q")
|
5
|
-
end
|
6
|
-
|
7
|
-
Then /^I should see a selectable list with field choices$/ do
|
8
|
-
page.should have_selector("select#search_field")
|
9
|
-
end
|
10
|
-
|
11
|
-
Then /^I should see the sort dropdown$/ do
|
12
|
-
page.should have_selector("#sort-dropdown")
|
13
|
-
end
|
14
|
-
|
15
|
-
Then /^I should see the sort dropdown with values "([^\"]*)"$/ do |values|
|
16
|
-
page.should have_selector('#sort-dropdown') do
|
17
|
-
labels = values.split(", ")
|
18
|
-
labels.each do |label|
|
19
|
-
with_tag('li', label)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Then /^I should see the sort list with "([^\"]*)" selected$/ do |value|
|
25
|
-
page.should have_selector('#sort-dropdown .css-dropdown a', :text => value)
|
26
|
-
end
|
27
|
-
|
28
|
-
When /^I sort by "([^\"]*)"$/ do |value|
|
29
|
-
page.should have_selector('#sort-dropdown') do
|
30
|
-
click_link(value)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
Then /^I should see a "([^\"]*)" button$/ do |label|
|
35
|
-
page.should have_selector("button[type='submit'] .submit-search-text")
|
36
|
-
end
|
37
|
-
|
38
|
-
Then /^I should not see the "([^\"]*)" element$/ do |id|
|
39
|
-
page.should_not have_selector("##{id}")
|
40
|
-
end
|
41
|
-
|
42
|
-
Then /^I should see the "([^\"]*)" element$/ do |id|
|
43
|
-
page.should have_selector("##{id}")
|
44
|
-
end
|
45
|
-
|
46
|
-
Given /^the application is configured to have searchable fields "([^\"]*)" with values "([^\"]*)"$/ do |fields, values|
|
47
|
-
labels = fields.split(", ")
|
48
|
-
values = values.split(", ")
|
49
|
-
combined = labels.zip(values)
|
50
|
-
CatalogController.blacklight_config[:search_fields] = []
|
51
|
-
combined.each do |pair|
|
52
|
-
CatalogController.blacklight_config[:search_fields] << pair
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
Then /^I should see select list "([^\"]*)" with field labels "([^\"]*)"$/ do |list_css, names|
|
57
|
-
page.should have_selector(list_css) do
|
58
|
-
labels = names.split(", ")
|
59
|
-
labels.each do |label|
|
60
|
-
with_tag('option', label)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
Then /^I should see select list "([^\"]*)" with "([^\"]*)" selected$/ do |list_css, label|
|
66
|
-
page.should have_selector(list_css) do |e|
|
67
|
-
with_tag("[selected=selected]", {:count => 1}) do
|
68
|
-
with_tag("option", {:count => 1, :text => label})
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# Results Page
|
74
|
-
Given /^the application is configured to have sort fields "([^\"]*)" with values "([^\"]*)"$/ do |fields, values|
|
75
|
-
labels = fields.split(", ")
|
76
|
-
values = values.split(", ")
|
77
|
-
combined = labels.zip(values)
|
78
|
-
CatalogController.blacklight_config[:sort_fields] = []
|
79
|
-
combined.each do |pair|
|
80
|
-
CatalogController.blacklight_config[:sort_fields] << pair
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
Then /^I should get results$/ do
|
85
|
-
page.should have_selector("div.document")
|
86
|
-
end
|
87
|
-
|
88
|
-
Then /^I should not get results$/ do
|
89
|
-
page.should_not have_selector("div.document")
|
90
|
-
end
|
91
|
-
|
92
|
-
Then /^I should see the applied filter "([^\"]*)" with the value "([^\"]*)"$/ do |filter, text|
|
93
|
-
page.should have_selector("div#facets div h3", :text => filter)
|
94
|
-
page.should have_selector("div#facets div span.selected", :text => text)
|
95
|
-
end
|
96
|
-
|
97
|
-
Then /^I should see an rss discovery link/ do
|
98
|
-
page.should have_selector("link[rel=alternate][type='application/rss+xml']")
|
99
|
-
end
|
100
|
-
|
101
|
-
Then /^I should see an atom discovery link/ do
|
102
|
-
page.should have_selector("link[rel=alternate][type='application/atom+xml']")
|
103
|
-
end
|
104
|
-
|
105
|
-
Then /^I should see opensearch response metadata tags/ do
|
106
|
-
page.should have_selector("meta[name=totalResults]")
|
107
|
-
page.should have_selector("meta[name=startIndex]")
|
108
|
-
page.should have_selector("meta[name=itemsPerPage]")
|
109
|
-
end
|
110
|
-
|
111
|
-
# Then /^I should see the applied filter "([^\"]*)" with the value
|
112
|
-
# "([^\"]*)"$/ do |filter, text|
|
113
|
-
# page.should have_tag("div#facets div") do |node|
|
114
|
-
# node.should have_selector("h3", :content => filter)
|
115
|
-
# node.should have_selector("span.selected", :content => /#{text}.*/)
|
116
|
-
# end
|
117
|
-
# end
|
118
|
-
|