sufia 2.0.1 → 3.0.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/CONTRIBUTING.md +111 -0
- data/Gemfile +4 -4
- data/History.md +126 -0
- data/README.md +23 -5
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia/multiForm.js +10 -2
- data/app/assets/stylesheets/{application-bootstrap.css → application-bootstrap.css.erb} +7 -7
- data/app/assets/stylesheets/{bootstrap.min.css → bootstrap.min.css.erb} +1 -1
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +9 -3
- data/app/controllers/single_use_link_controller.rb +1 -1
- data/app/helpers/sufia_helper.rb +7 -1
- data/app/models/contact_form.rb +0 -14
- data/app/views/_user_util_links.html.erb +0 -15
- data/app/views/batch_edits/_check_all.html.erb +2 -2
- data/app/views/batch_edits/_delete_selected.html.erb +1 -1
- data/app/views/layouts/{_head-tag-content.html.erb → _head_tag_content.html.erb} +0 -0
- data/app/views/layouts/homepage.html.erb +2 -2
- data/app/views/layouts/sufia-one-column.html.erb +1 -1
- data/app/views/layouts/sufia-two-column.html.erb +1 -1
- data/app/views/users/edit.html.erb +1 -1
- data/app/views/users/show.html.erb +1 -17
- data/config/routes.rb +31 -33
- data/lib/generators/sufia/sufia_generator.rb +5 -3
- data/lib/generators/sufia/templates/catalog_controller.rb +5 -1
- data/lib/generators/sufia/templates/config/redis_config.rb +1 -14
- data/lib/sufia/batch_edits_controller_behavior.rb +1 -1
- data/lib/sufia/controller.rb +1 -1
- data/lib/sufia/dashboard_controller_behavior.rb +8 -2
- data/lib/sufia/files_controller_behavior.rb +1 -2
- data/lib/sufia/version.rb +1 -1
- data/spec/active_fedora/unsaved_digital_object_spec.rb +1 -15
- data/spec/controllers/authorities_controller_spec.rb +1 -15
- data/spec/controllers/batch_controller_spec.rb +10 -16
- data/spec/controllers/batch_edits_controller_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +1 -15
- data/spec/controllers/dashboard_controller_spec.rb +23 -17
- data/spec/controllers/downloads_controller_spec.rb +1 -15
- data/spec/controllers/generic_files_controller_spec.rb +18 -32
- data/spec/controllers/mailbox_controller_spec.rb +1 -15
- data/spec/controllers/single_use_link_controller_spec.rb +6 -13
- data/spec/controllers/users_controller_spec.rb +27 -41
- data/spec/factories/users.rb +5 -14
- data/spec/features/browse_dashboard_files.rb +21 -0
- data/spec/features/browse_files.rb +31 -0
- data/spec/features/contact_form.rb +99 -0
- data/spec/features/display_dashboard.rb +46 -0
- data/spec/features/ingest_upload_files.rb +24 -0
- data/spec/features/users_spec.rb +25 -0
- data/spec/helpers/generic_file_helper_spec.rb +10 -3
- data/spec/helpers/sufia_helper_spec.rb +1 -1
- data/spec/lib/sufia/id_service_spec.rb +1 -15
- data/spec/models/audit_job_spec.rb +1 -15
- data/spec/models/batch_spec.rb +1 -15
- data/spec/models/batch_update_job_spec.rb +3 -16
- data/spec/models/characterize_job_spec.rb +4 -4
- data/spec/models/checksum_audit_log_spec.rb +1 -15
- data/spec/models/event_jobs_spec.rb +1 -15
- data/spec/models/file_content_datastream_spec.rb +5 -19
- data/spec/models/fits_datastream_spec.rb +1 -15
- data/spec/models/generic_file/web_form_spec.rb +34 -0
- data/spec/models/generic_file_spec.rb +11 -39
- data/spec/models/local_authority_spec.rb +3 -15
- data/spec/models/properties_datastream_spec.rb +1 -1
- data/spec/models/single_use_link_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +1 -1
- data/spec/models/transcode_audio_job_spec.rb +1 -1
- data/spec/models/transcode_video_job_spec.rb +1 -1
- data/spec/models/trophy_spec.rb +1 -1
- data/spec/models/unzip_job_spec.rb +1 -15
- data/spec/models/user_spec.rb +1 -15
- data/spec/rake/sufia_fixtures_spec.rb +3 -17
- data/spec/routing/route_spec.rb +7 -21
- data/spec/spec_helper.rb +8 -20
- data/spec/support/features.rb +6 -0
- data/spec/support/features/session_helpers.rb +21 -0
- data/spec/support/lib/generators/test_app_generator.rb +4 -0
- data/spec/views/batch_edits/check_all_spec.rb +6 -4
- data/sufia-models/app/models/checksum_audit_log.rb +1 -15
- data/sufia-models/app/models/domain_term.rb +3 -15
- data/sufia-models/app/models/geo_names_resource.rb +1 -13
- data/sufia-models/app/models/local_authority.rb +12 -17
- data/sufia-models/app/models/local_authority_entry.rb +1 -15
- data/sufia-models/app/models/single_use_link.rb +2 -3
- data/sufia-models/app/models/trophy.rb +1 -1
- data/sufia-models/app/models/version_committer.rb +1 -15
- data/sufia-models/lib/sufia/models.rb +6 -2
- data/sufia-models/lib/sufia/models/engine.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
- data/sufia-models/lib/sufia/models/generic_file/accessible_attributes.rb +87 -0
- data/sufia-models/lib/sufia/models/generic_file/permissions.rb +2 -1
- data/sufia-models/lib/sufia/models/generic_file/web_form.rb +4 -1
- data/sufia-models/lib/sufia/models/user.rb +9 -2
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/{lib → sufia-models/lib}/tasks/resque.rake +0 -0
- data/sufia-models/sufia-models.gemspec +13 -11
- data/sufia.gemspec +1 -3
- data/tasks/sufia-dev.rake +21 -10
- metadata +30 -84
- data/config/cucumber.yml +0 -8
- data/features/browse_dashboard_files.feature +0 -16
- data/features/browse_files.feature +0 -16
- data/features/contact_form.feature +0 -86
- data/features/display_dashboard.feature +0 -42
- data/features/ingest_upload_files.feature +0 -21
- data/features/step_definitions/edit_metadata_steps.rb +0 -89
- data/features/step_definitions/fixture_steps.rb +0 -35
- data/features/step_definitions/show_document_steps.rb +0 -103
- data/features/step_definitions/sufia.rb +0 -69
- data/features/step_definitions/user_steps.rb +0 -58
- data/features/step_definitions/web_steps.rb +0 -235
- data/features/support/cleanup.rb +0 -19
- data/features/support/env.rb +0 -90
- data/features/support/headless.rb +0 -26
- data/features/support/paths.rb +0 -101
- data/features/users.feature +0 -18
- data/spec/lib/sufia/role_mapper_spec.rb +0 -28
- data/spec/support/Gemfile +0 -24
- data/spec/views/single_user_link/download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_show.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/show.html.erb_spec.rb +0 -5
- data/tasks/cucumber.rake +0 -72
data/config/cucumber.yml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<%
|
|
2
|
-
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
|
3
|
-
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
|
4
|
-
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
|
5
|
-
%>
|
|
6
|
-
default: <%= std_opts %> features
|
|
7
|
-
wip: --tags @wip:3 --wip features
|
|
8
|
-
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Feature: Browse Dashboard files
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Scenario: Browse via Fixtures
|
|
5
|
-
Given I am logged in as "archivist2@example.com"
|
|
6
|
-
And I follow "dashboard"
|
|
7
|
-
And I follow "more Keywords"
|
|
8
|
-
And I follow "keyf"
|
|
9
|
-
Then I should see "Test mp3"
|
|
10
|
-
|
|
11
|
-
Scenario: Edit Dashboard File
|
|
12
|
-
Given I am logged in as "archivist2@example.com"
|
|
13
|
-
And I follow "dashboard"
|
|
14
|
-
When I follow the link within "a[href='/files/test5/edit']"
|
|
15
|
-
Then I should see "Edit Test mp3"
|
|
16
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Feature: Browse files
|
|
2
|
-
|
|
3
|
-
Scenario: Browse via Fixtures
|
|
4
|
-
# Given I load sufia fixtures
|
|
5
|
-
When I go to the home page
|
|
6
|
-
And I follow "more Keyword"
|
|
7
|
-
And I follow "test"
|
|
8
|
-
Then I should see "1 - 4 of 4"
|
|
9
|
-
When I follow "Test Document PDF"
|
|
10
|
-
Then I should see "Download"
|
|
11
|
-
But I should not see "Edit"
|
|
12
|
-
Given I am logged in as "archivist1@example.com"
|
|
13
|
-
And I follow "more Keyword"
|
|
14
|
-
And I follow "test"
|
|
15
|
-
When I follow "Test Document PDF"
|
|
16
|
-
And I should see "Edit"
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
Feature: Sending an email via the contact form
|
|
2
|
-
|
|
3
|
-
Scenario: Input info to contact form and send
|
|
4
|
-
# this step allows delivery even if the mail server is down
|
|
5
|
-
Given I have a mail server
|
|
6
|
-
Given I am on the home page
|
|
7
|
-
When I follow "Contact"
|
|
8
|
-
Then I should see "Contact Form"
|
|
9
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
10
|
-
And I fill in "contact_form_email" with "archivist1@example.com"
|
|
11
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
12
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
13
|
-
And I select "Depositing content" from "contact_form_category"
|
|
14
|
-
And I press "Send"
|
|
15
|
-
Then I should see "Thank you"
|
|
16
|
-
# this step allows the delivery to go back to normal
|
|
17
|
-
Then I reset the mail server
|
|
18
|
-
|
|
19
|
-
Scenario: Input no selection for contact type
|
|
20
|
-
Given I am on the home page
|
|
21
|
-
When I follow "Contact"
|
|
22
|
-
Then I should see "Contact Form"
|
|
23
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
24
|
-
And I fill in "contact_form_email" with "archivist1"
|
|
25
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
26
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
27
|
-
And I press "Send"
|
|
28
|
-
Then I should see "Sorry, this message was not sent successfully"
|
|
29
|
-
|
|
30
|
-
Scenario: Input poorly formed email address for contact
|
|
31
|
-
Given I am on the home page
|
|
32
|
-
When I follow "Contact"
|
|
33
|
-
Then I should see "Contact Form"
|
|
34
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
35
|
-
And I fill in "contact_form_email" with "archivist1"
|
|
36
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
37
|
-
And I select "Depositing content" from "contact_form_category"
|
|
38
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
39
|
-
And I press "Send"
|
|
40
|
-
Then I should see "Sorry, this message was not sent successfully"
|
|
41
|
-
|
|
42
|
-
Scenario: Input empty name field
|
|
43
|
-
Given I am on the home page
|
|
44
|
-
When I follow "Contact"
|
|
45
|
-
Then I should see "Contact Form"
|
|
46
|
-
And I fill in "contact_form_email" with "archivist1@example.com"
|
|
47
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
48
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
49
|
-
And I select "Depositing content" from "contact_form_category"
|
|
50
|
-
And I press "Send"
|
|
51
|
-
Then I should see "Sorry, this message was not sent successfully"
|
|
52
|
-
|
|
53
|
-
Scenario: Input empty subject field
|
|
54
|
-
Given I am on the home page
|
|
55
|
-
When I follow "Contact"
|
|
56
|
-
Then I should see "Contact Form"
|
|
57
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
58
|
-
And I fill in "contact_form_email" with "archivist1@example.com"
|
|
59
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
60
|
-
And I select "Depositing content" from "contact_form_category"
|
|
61
|
-
And I press "Send"
|
|
62
|
-
Then I should see "Sorry, this message was not sent successfully"
|
|
63
|
-
|
|
64
|
-
Scenario: Input empty message field
|
|
65
|
-
Given I am on the home page
|
|
66
|
-
When I follow "Contact"
|
|
67
|
-
Then I should see "Contact Form"
|
|
68
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
69
|
-
And I fill in "contact_form_email" with "archivist1@example.com"
|
|
70
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
71
|
-
And I select "Depositing content" from "contact_form_category"
|
|
72
|
-
And I press "Send"
|
|
73
|
-
Then I should see "Sorry, this message was not sent successfully"
|
|
74
|
-
|
|
75
|
-
Scenario: Input spam field
|
|
76
|
-
Given I am on the home page
|
|
77
|
-
When I follow "Contact"
|
|
78
|
-
Then I should see "Contact Form"
|
|
79
|
-
And I fill in "contact_form_contact_method" with "My name is"
|
|
80
|
-
And I fill in "contact_form_name" with "Test McPherson"
|
|
81
|
-
And I fill in "contact_form_email" with "archivist1@example.com"
|
|
82
|
-
And I fill in "contact_form_subject" with "My Subject is Cool"
|
|
83
|
-
And I fill in "contact_form_message" with "I am contacting you regarding ScholarSphere."
|
|
84
|
-
And I select "Depositing content" from "contact_form_category"
|
|
85
|
-
And I press "Send"
|
|
86
|
-
Then I should see "Sorry, "
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
Feature: As an authenticate and authorized
|
|
2
|
-
user when viewing my dashboard I see all
|
|
3
|
-
the objects I have access to
|
|
4
|
-
|
|
5
|
-
Scenario: I am on the homepage and want to view dashboard
|
|
6
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
7
|
-
And I follow "dashboard"
|
|
8
|
-
Then I should see "Dashboard"
|
|
9
|
-
|
|
10
|
-
Scenario: I am on the homepage and I want to search dashboard
|
|
11
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
12
|
-
And I follow "dashboard"
|
|
13
|
-
When I fill in "dashboard_search" with "dash search"
|
|
14
|
-
When I press "dashboard_submit"
|
|
15
|
-
Then I should see "Dashboard"
|
|
16
|
-
And I should see "You searched for: dash search"
|
|
17
|
-
Then the "search-field-header" field should not contain "dash search"
|
|
18
|
-
|
|
19
|
-
Scenario: I am on the dashboard and want to upload files
|
|
20
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
21
|
-
And I follow "dashboard"
|
|
22
|
-
And I follow "Upload File(s)"
|
|
23
|
-
Then I should see "Upload"
|
|
24
|
-
|
|
25
|
-
Scenario: I am on the dashboard and want to search SS
|
|
26
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
27
|
-
And I follow "dashboard"
|
|
28
|
-
When I fill in "search-field-header" with "ss search"
|
|
29
|
-
When I press "search-submit-header"
|
|
30
|
-
Then I should see "You searched for: ss search"
|
|
31
|
-
Then I should not see "Dashboard"
|
|
32
|
-
Then the "search-field-header" field should contain "ss search"
|
|
33
|
-
|
|
34
|
-
@culerity
|
|
35
|
-
Scenario: I have files on my dashboard I should see icons
|
|
36
|
-
#Given I load sufia fixtures
|
|
37
|
-
And I am logged in as "archivist1@example.com"
|
|
38
|
-
And I follow "dashboard"
|
|
39
|
-
Then I should see "Test Document Text"
|
|
40
|
-
When I follow the link within "a[href='/files/test3'].itemtrash"
|
|
41
|
-
Then I should see "The file has been deleted"
|
|
42
|
-
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
Feature: Uploading files via web form
|
|
2
|
-
In order to add file to my collections
|
|
3
|
-
As an authorized user
|
|
4
|
-
I want to upload files with a web form
|
|
5
|
-
|
|
6
|
-
Scenario: Getting to the ingest screen
|
|
7
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
8
|
-
When I follow "upload"
|
|
9
|
-
Then I should see "Select files"
|
|
10
|
-
And I should see "Start upload"
|
|
11
|
-
And I should see "Cancel upload"
|
|
12
|
-
And I should see a file chooser button
|
|
13
|
-
|
|
14
|
-
@celerity
|
|
15
|
-
Scenario: Upload a file without checking terms of service
|
|
16
|
-
Given I am logged in as "contentauthor@psu.edu"
|
|
17
|
-
When I am on the "ingest" page
|
|
18
|
-
And I attach the file "spec/fixtures/image.jp2" to "files[]"
|
|
19
|
-
And I attach the file "spec/fixtures/jp2_fits.xml" to "files[]"
|
|
20
|
-
And I press "Start upload"
|
|
21
|
-
Then I should see "You must accept the terms of service!"
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
# This is the post-submission complement to "I fill in the following" from web_steps.rb
|
|
16
|
-
Then /^the following (should contain|contain|should not contain|do not contain):$/ do |bool,table|
|
|
17
|
-
# table is a Cucumber::Ast::Table
|
|
18
|
-
if bool == "should contain" || bool == "contain"
|
|
19
|
-
table.rows_hash.each do |name, value|
|
|
20
|
-
step %{the "#{name}" field should contain "#{value}"}
|
|
21
|
-
end
|
|
22
|
-
elsif bool == "should not contain" || bool == "do not contain"
|
|
23
|
-
table.rows_hash.each do |name, value|
|
|
24
|
-
step %{the "#{name}" field should not contain "#{value}"}
|
|
25
|
-
end
|
|
26
|
-
else
|
|
27
|
-
pending
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
When /^I select the following(?: within "([^"]*)")?$/ do |scope_selector, table|
|
|
32
|
-
# table is a Cucumber::Ast::Table
|
|
33
|
-
table.rows_hash.each do |field_selector, value|
|
|
34
|
-
step %{I select "#{value}" from "#{field_selector}" within "#{scope_selector}"}
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
Then /^the following should be selected(?: within "([^"]*)")?$/ do |scope_selector, table|
|
|
39
|
-
# table is a Cucumber::Ast::Table
|
|
40
|
-
table.rows_hash.each do |field_selector, value|
|
|
41
|
-
step %{"#{value}" should be selected from "#{field_selector}" within "#{scope_selector}"}
|
|
42
|
-
# Then %{the "#{field_selector}" field within "#{scope_selector}" should contain "#{value}"}
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
Then /^"([^"]*)" should be selected from "([^"]*)"(?: within "([^"]*)")?$/ do |value, field_selector, scope_selector|
|
|
47
|
-
# table is a Cucumber::Ast::Table
|
|
48
|
-
with_scope(scope_selector) do
|
|
49
|
-
find_and_check_selected_value(field_selector, value)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
Then /^I should see a "([^"]*)" button(?: within "([^"]*)")?$/ do |button_locator, scope_selector|
|
|
54
|
-
with_scope(scope_selector) do
|
|
55
|
-
begin
|
|
56
|
-
find_button(button_locator)
|
|
57
|
-
rescue
|
|
58
|
-
raise "no button with value or id or text '#{button_locator}' found"
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
Then /^I should see a file chooser button$/ do
|
|
64
|
-
find(:xpath, '//input[@type="file"]')
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
Given /^that "([^"]*)" has been loaded into fedora$/ do |pid|
|
|
68
|
-
ActiveFedora::FixtureLoader.new('spec/fixtures').reload(pid)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
# Find a select tag on the page
|
|
73
|
-
# @param [String] locator Capybara locator
|
|
74
|
-
# @return [Capybara::Node]
|
|
75
|
-
def find_select(locator)
|
|
76
|
-
no_select_msg = "no select box with id, name, or label '#{locator}' found"
|
|
77
|
-
select = find(:xpath, XPath::HTML.select(locator), :message => no_select_msg)
|
|
78
|
-
return select
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# Find a select tag on the page and test whether the given value is selected within it
|
|
82
|
-
# @param [String] locator Capybara locator for the select tag
|
|
83
|
-
# @param [String] value the value that should be selected
|
|
84
|
-
def find_and_check_selected_value(locator, value)
|
|
85
|
-
select = find_select(locator)
|
|
86
|
-
no_option_msg = "no option with text '#{value}' in select box '#{locator}'"
|
|
87
|
-
option = select.find(:xpath, XPath::HTML.option(value), :message => no_option_msg)
|
|
88
|
-
option.should be_selected
|
|
89
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
require "rake"
|
|
16
|
-
|
|
17
|
-
def loaded_files_excluding_current_rake_file
|
|
18
|
-
$".reject { |file| file.include? "lib/tasks/fixtures" }
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def activefedora_path
|
|
22
|
-
Gem.loaded_specs['active-fedora'].full_gem_path
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
Given /^I load sufia fixtures$/ do
|
|
26
|
-
@rake = Rake::Application.new
|
|
27
|
-
Rake.application = @rake
|
|
28
|
-
Rake.application.rake_require("tasks/sufia-fixtures", ["."], loaded_files_excluding_current_rake_file)
|
|
29
|
-
Rake.application.rake_require("lib/tasks/fixtures", ["."], loaded_files_excluding_current_rake_file)
|
|
30
|
-
Rake.application.rake_require("lib/tasks/active_fedora", [activefedora_path], loaded_files_excluding_current_rake_file)
|
|
31
|
-
Rake::Task.define_task(:environment)
|
|
32
|
-
@rake['sufia:fixtures:refresh'].invoke
|
|
33
|
-
@rake['sufia:fixtures:fix'].invoke
|
|
34
|
-
end
|
|
35
|
-
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
|
|
16
|
-
|
|
17
|
-
# Terms (dt / dd pairs)
|
|
18
|
-
|
|
19
|
-
Then /^I should see the "([^\"]*)" term$/ do |arg1|
|
|
20
|
-
page.should have_selector("dt", :text=>arg1)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
Then /^I should not see the "([^\"]*)" term$/ do |arg1|
|
|
24
|
-
page.should_not have_selector("dt", :text=>arg1)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
Then /^the "([^\"]*)" term should contain "([^\"]*)"$/ do |arg1, arg2|
|
|
28
|
-
page.should have_selector("dt", :content=>arg1) do |dt|
|
|
29
|
-
dt.each do |term|
|
|
30
|
-
term.next.should have_selector("dd", :text=>arg2)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
Then /^I should see the "([^\"]*)" value$/ do |arg1|
|
|
36
|
-
pending
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
Then /^I should see a link called "([^\"]*)"$/ do |locator|
|
|
40
|
-
find(:xpath, XPath::HTML.link(locator)).should_not be_nil
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
Then /^I should see a link to "([^\"]*)"$/ do |link_path|
|
|
44
|
-
page.should have_xpath(".//a[@href=\"#{path_to(link_path)}\"]")
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
Then /^I should see a link to the "([^\"]*)" page$/ do |link_path|
|
|
48
|
-
page.should have_xpath(".//a[@href=\"#{path_to(link_path)}\"]")
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
Then /^I should see a link to "([^\"]*)" with label "([^\"]*)"$/ do |link_path,link_label|
|
|
52
|
-
page.should have_xpath(".//a[@href=\"#{path_to(link_path)}\"]", :text=>link_label)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
Then /^I should not see a link to "([^\"]*)"$/ do |link_path|
|
|
56
|
-
page.should_not have_xpath(".//a[@href=\"#{path_to(link_path)}\"]")
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
Then /^I should not see a link to the "([^\"]*)" page$/ do |link_name|
|
|
60
|
-
page.should_not have_xpath(".//a[@href=\"#{path_to(link_name)}\"]")
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
Then /^I should see a dropdown for "([^\"]*)"/ do |id|
|
|
64
|
-
page.should have_selector("select##{id}")
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
Then /^related links are displayed as urls$/ do
|
|
68
|
-
pending
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Delete button for field or contributor
|
|
72
|
-
Then /^I (should|should not) see a delete (field|contributor) button for "([^\"]*)"$/ do |bool,type,target|
|
|
73
|
-
if bool == "should"
|
|
74
|
-
# page.should have_selector("a, :class=>"destructive #{type}", :href=>path_to(target))
|
|
75
|
-
page.should have_xpath(".//a[@href=\"#{path_to(target)}\" and contains(@class, \"destructive\") and contains(@class, \"destroy_#{type}\")]")
|
|
76
|
-
else
|
|
77
|
-
# page.should_not have_selector("a", :class=>"destructive #{type}", :href=>path_to(target))
|
|
78
|
-
page.should_not have_xpath(".//a[@href=\"#{path_to(target)}\" and contains(@class, \"destructive\") and contains(@class, \"#{type}\")]")
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
Then /^I (should|should not) see a button to delete "([^\"]*)" from "([^\"]*)"$/ do |bool,target,container|
|
|
83
|
-
path_name = "#{target} with #{container} as its container"
|
|
84
|
-
if bool == "should"
|
|
85
|
-
# page.should have_selector("a.destroy_file_asset", :href=>path_to(path_name))
|
|
86
|
-
page.should have_xpath(".//a[@href=\"#{path_to(path_name)}\" and @class=\"destroy_file_asset\"]")
|
|
87
|
-
else
|
|
88
|
-
# page.should_not have_selector("a.destroy_file_asset", :href=>path_to(path_name))
|
|
89
|
-
page.should_not have_xpath(".//a[@href=\"#{path_to(path_name)}\" and @class=\"destroy_file_asset\"]")
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# Delete button for assets
|
|
94
|
-
Then /^I (should|should not) see a delete button for "([^\"]*)"$/ do |bool,target|
|
|
95
|
-
path_name = "the delete confirmation page for #{target}"
|
|
96
|
-
if bool == "should"
|
|
97
|
-
# page.should have_selector("a.destructive", :href=>path_to(target))
|
|
98
|
-
page.should have_xpath(".//a[@href=\"#{path_to(path_name)}\" and @class=\"delete_asset\"]")
|
|
99
|
-
else
|
|
100
|
-
# page.should_not have_selector("a.destructive", :href=>path_to(target))
|
|
101
|
-
page.should_not have_xpath(".//a[@href=\"#{path_to(path_name)}\" and @class=\"delete_asset\"]")
|
|
102
|
-
end
|
|
103
|
-
end
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
require "cucumber/rspec/doubles"
|
|
15
|
-
|
|
16
|
-
When /^I attach a file "([^"]*)" to the dynamically created "([^"]*)"$/ do |path, field|
|
|
17
|
-
find(field).native.send_keys(File.expand_path(path, Rails.root))
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
Given /^And I click the anchor "([^"]*)"$/ do |link|
|
|
21
|
-
click_link(link)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
Given /^And I click within the anchor "(.*?)"$/ do |selector|
|
|
25
|
-
#Given /^(?:|I )click within the anchor "([^"]*)"$/ do |selector|
|
|
26
|
-
find(selector).click
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
Given /^I have a mail server$/ do
|
|
30
|
-
ContactForm.any_instance.stub(:deliver).and_return(true)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
Then /^I reset the mail server$/ do
|
|
34
|
-
ContactForm.any_instance.unstub(:deliver)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
When /^I follow the link within "(.*?)"$/ do |selector|
|
|
38
|
-
find(selector).click
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# tests wether a select option is choosen
|
|
42
|
-
Then /^"([^"]*)" should be selected for "([^"]*)"(?: within "([^\"]*)")?$/ do |value, field, selector|
|
|
43
|
-
with_scope(selector) do
|
|
44
|
-
field_labeled(field).find(:xpath, ".//option[@selected = 'selected'][text() = '#{value}']").should be_present
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
Then /^"([^"]*)" should not be selected for "([^"]*)"(?: within "([^\"]*)")?$/ do |value, field, selector|
|
|
49
|
-
with_scope(selector) do
|
|
50
|
-
field_labeled(field).find(:xpath, ".//option[@selected = 'selected'][text() = '#{value}']").should_not be_present
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# checks if a form field is disabled
|
|
55
|
-
Then /^"([^\"]*)" should( not)? be disabled$/ do |label, negate|
|
|
56
|
-
element = begin
|
|
57
|
-
find_button(label)
|
|
58
|
-
rescue Capybara::ElementNotFound
|
|
59
|
-
find_field(label)
|
|
60
|
-
end
|
|
61
|
-
["false", "", nil].send(negate ? :should : :should_not, include(field[:disabled]))
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
Given /^I load users$/ do
|
|
65
|
-
FactoryGirl.create(:user)
|
|
66
|
-
FactoryGirl.create(:archivist)
|
|
67
|
-
FactoryGirl.create(:curator)
|
|
68
|
-
end
|
|
69
|
-
|