blacklight 4.3.0 → 4.4.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 +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
|
-
|