orcid 0.9.0 → 0.9.1

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/controllers/orcid/application_controller.rb +8 -1
  4. data/app/controllers/orcid/profile_connections_controller.rb +2 -1
  5. data/app/controllers/orcid/profile_requests_controller.rb +18 -1
  6. data/app/models/orcid/profile_connection.rb +1 -1
  7. data/app/models/orcid/profile_request.rb +9 -1
  8. data/app/models/orcid/profile_status.rb +5 -1
  9. data/app/services/orcid/profile_request_coordinator.rb +4 -4
  10. data/app/views/orcid/profile_connections/_authenticated_connection.html.erb +1 -3
  11. data/app/views/orcid/profile_connections/_orcid_connector.html.erb +4 -1
  12. data/app/views/orcid/profile_connections/_pending_connection.html.erb +8 -9
  13. data/app/views/orcid/profile_connections/_profile_request_in_error.html.erb +30 -0
  14. data/app/views/orcid/profile_connections/_profile_request_pending.html.erb +6 -3
  15. data/app/views/orcid/profile_connections/new.html.erb +3 -3
  16. data/app/views/orcid/profile_requests/show.html.erb +1 -5
  17. data/config/locales/orcid.en.yml +25 -5
  18. data/config/routes.rb +1 -1
  19. data/lib/orcid.rb +6 -0
  20. data/lib/orcid/version.rb +1 -1
  21. data/orcid.gemspec +1 -0
  22. data/spec/controllers/orcid/application_controller_spec.rb +15 -0
  23. data/spec/controllers/orcid/profile_requests_controller_spec.rb +18 -0
  24. data/spec/features/non_ui_based_interactions_spec.rb +1 -0
  25. data/spec/lib/orcid_spec.rb +17 -0
  26. data/spec/models/orcid/profile_connection_spec.rb +10 -12
  27. data/spec/models/orcid/profile_request_spec.rb +10 -2
  28. data/spec/models/orcid/profile_status_spec.rb +17 -5
  29. data/spec/services/orcid/profile_request_coordinator_spec.rb +6 -6
  30. data/spec/spec_helper.rb +12 -0
  31. data/spec/views/orcid/profile_connections/_orcid_connector.html.erb_spec.rb +12 -1
  32. data/spec/views/orcid/profile_connections/_profile_request_in_error.html.erb_spec.rb +21 -0
  33. metadata +80 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c728b248c54177678ba9f6b1156a67ef1388d19b
4
- data.tar.gz: 08212ff1cfdaced97466dc240884f5d585f29e8a
3
+ metadata.gz: d66cd54bd576ea08eb376f44610131ac480ba6b5
4
+ data.tar.gz: f483169f3bd055e2fb58b6328e8e9e553965a630
5
5
  SHA512:
6
- metadata.gz: f733188e685634db34d65ebeb625f4c557672bfcdb2e0e88339be06c9c3d8cd079f90461ec7ba7ad10eb6e9e73323aafd6c0a8c3ed26b5ddf683b1592494d256
7
- data.tar.gz: e6026908e32f9e3cdf23c4646af60b1c2716155d6fadfac3b06b11cf19f979c9cfcd0928dbbdc1c2fd6cb9b0b19d05bfdf4909c71ca8710aaac63e35a7f3aa2a
6
+ metadata.gz: 414235bdc885e4223581f787f078e417d83428c6363cd370a4535c5cc9577cee21ac6dbe049e437541f3b3fe6f864055a8f078e6c89e5ad3c040dad211f265af
7
+ data.tar.gz: a91a0f0236f4e29b988db18d947c057a917ae4a6e70a16dbd294101aa50c6cead16fcea0bddbf2c9d08d49ebfc9b00943629d2af4157f148b652fa1ff07e399d
data/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![Build Status](https://travis-ci.org/projecthydra-labs/orcid.png?branch=master)](https://travis-ci.org/projecthydra-labs/orcid)
5
5
  [![Code Climate](https://codeclimate.com/github/projecthydra-labs/orcid.png)](https://codeclimate.com/github/projecthydra-labs/orcid)
6
6
  [![Coverage Status](https://img.shields.io/coveralls/projecthydra-labs/orcid.svg)](https://coveralls.io/r/projecthydra-labs/orcid)
7
+ [![Documentation Status](http://inch-ci.org/github/projecthydra-labs/orcid.svg?branch=master)](http://inch-ci.org/github/projecthydra-labs/orcid)
7
8
  [![API Docs](http://img.shields.io/badge/API-docs-blue.svg)](http://rubydoc.info/gems/orcid/0.8.0/frames)
8
9
  [![APACHE 2 License](http://img.shields.io/badge/APACHE2-license-blue.svg)](./LICENSE)
9
10
  [![Contributing Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
@@ -1,6 +1,13 @@
1
1
  module Orcid
2
2
  # The foundation for Orcid controllers. A few helpful accessors.
3
3
  class ApplicationController < Orcid.parent_controller.constantize
4
+ # Providing a mechanism for overrding the default path in an implementing
5
+ # application
6
+ def path_for(named_path, *args)
7
+ return send(named_path, *args).to_s if respond_to?(named_path)
8
+ yield(*args)
9
+ end
10
+
4
11
  private
5
12
 
6
13
  def redirecting_because_user_has_connected_orcid_profile
@@ -9,7 +16,7 @@ module Orcid
9
16
  'orcid.requests.messages.previously_connected_profile',
10
17
  orcid_profile_id: orcid_profile.orcid_profile_id
11
18
  )
12
- redirect_to main_app.root_path
19
+ redirect_to path_for(:orcid_settings_path) { main_app.root_path }
13
20
  return true
14
21
  else
15
22
  return false
@@ -72,7 +72,8 @@ module Orcid
72
72
  'orcid.connections.messages.verified_profile_connection_exists',
73
73
  orcid_profile_id: orcid_profile.orcid_profile_id
74
74
  )
75
- redirect_to('/', flash: { notice: notice })
75
+ location = path_for(:orcid_settings_path) { main_app.root_path }
76
+ redirect_to(location, flash: { notice: notice })
76
77
  end
77
78
  end
78
79
  end
@@ -36,12 +36,29 @@ module Orcid
36
36
  #
37
37
  # Thus we need to pass the location.
38
38
  if new_profile_request.valid?
39
- respond_with(orcid, location: orcid.profile_request_path)
39
+ flash[:notice] = I18n.t(
40
+ 'orcid.requests.messages.profile_request_created'
41
+ )
42
+
43
+ location = path_for(:after_successful_orcid_profile_request_path) do
44
+ orcid.profile_request_path
45
+ end
46
+
47
+ respond_with(orcid, location: location)
40
48
  else
41
49
  respond_with(orcid, new_profile_request)
42
50
  end
43
51
  end
44
52
 
53
+ def destroy
54
+ existing_profile_request.destroy if existing_profile_request
55
+ flash[:notice] = I18n.t('orcid.requests.messages.profile_request_destroyed')
56
+ location = path_for(:after_orcid_profile_request_destroyed_path) do
57
+ orcid.new_profile_request_path
58
+ end
59
+ respond_with(orcid, location: location)
60
+ end
61
+
45
62
  protected
46
63
 
47
64
  def redirecting_because_no_profile_request_was_found
@@ -11,7 +11,7 @@ module Orcid
11
11
 
12
12
  # See: http://support.orcid.org/knowledgebase/articles/132354-tutorial-searching-with-the-api
13
13
  class_attribute :available_query_attribute_names
14
- self.available_query_attribute_names = [:email, :text, :digital_object_ids]
14
+ self.available_query_attribute_names = [:text]
15
15
 
16
16
  available_query_attribute_names.each do |attribute_name|
17
17
  attribute attribute_name
@@ -4,6 +4,7 @@ module Orcid
4
4
  # * submitting a request for an ORCID Profile
5
5
  # * handling the response for the ORCID Profile creation
6
6
  class ProfileRequest < ActiveRecord::Base
7
+ ERROR_STATUS = 'error'.freeze
7
8
  def self.find_by_user(user)
8
9
  where(user: user).first
9
10
  end
@@ -25,8 +26,15 @@ module Orcid
25
26
  end
26
27
  end
27
28
 
28
- def validation_error_on_profile_creation(error_message)
29
+ def error_on_profile_creation(error_message)
29
30
  update_column(:response_text, error_message)
31
+ update_column(:response_status, ERROR_STATUS)
32
+ end
33
+
34
+ alias_attribute :error_message, :response_text
35
+
36
+ def error_on_profile_creation?
37
+ error_message.present? || response_status == ERROR_STATUS
30
38
  end
31
39
 
32
40
  end
@@ -41,7 +41,11 @@ module Orcid
41
41
  else
42
42
  request = request_finder.call(user)
43
43
  if request
44
- return callback(:profile_request_pending, request)
44
+ if request.error_on_profile_creation?
45
+ return callback(:profile_request_in_error, request)
46
+ else
47
+ return callback(:profile_request_pending, request)
48
+ end
45
49
  else
46
50
  return callback(:unknown)
47
51
  end
@@ -34,8 +34,8 @@ module Orcid
34
34
  payload = xml_payload(profile_request)
35
35
  remote_service.call(payload) do |on|
36
36
  on.success { |orcid_profile_id| profile_request.successful_profile_creation(orcid_profile_id) }
37
- on.failure { }
38
- on.orcid_validation_error { |error_message| profile_request.validation_error_on_profile_creation(error_message) }
37
+ on.failure { profile_request }
38
+ on.orcid_validation_error { |error_message| profile_request.error_on_profile_creation(error_message) }
39
39
  end
40
40
  end
41
41
 
@@ -45,8 +45,8 @@ module Orcid
45
45
  if !request.respond_to?(:user) || !request.user.present?
46
46
  fail MissingUserForProfileRequest, request
47
47
  end
48
- if !request.respond_to?(:validation_error_on_profile_creation)
49
- raise ProfileRequestMethodExpectedError.new(request, :validation_error_on_profile_creation)
48
+ if !request.respond_to?(:error_on_profile_creation)
49
+ raise ProfileRequestMethodExpectedError.new(request, :error_on_profile_creation)
50
50
  end
51
51
  if !request.respond_to?(:successful_profile_creation)
52
52
  raise ProfileRequestMethodExpectedError.new(request, :successful_profile_creation)
@@ -1,5 +1,3 @@
1
1
  <div class="authenticated-connection">
2
- <p>
3
- Your ORCID (<a class="orcid-profile-id" href="<%= Orcid.url_for_orcid_id(authenticated_connection.orcid_profile_id)%>" ><%= authenticated_connection.orcid_profile_id %></a>) has been authenticated for this application.
4
- </p>
2
+ <%= t('orcid.views.authenticated_connection', orcid_profile_url: Orcid.url_for_orcid_id(authenticated_connection.orcid_profile_id), orcid_profile_id: authenticated_connection.orcid_profile_id).html_safe %>
5
3
  </div>
@@ -1,7 +1,10 @@
1
1
  <% defined?(status_processor) || status_processor = Orcid::ProfileStatus.method(:for) %>
2
2
  <div class='orcid-connector'>
3
- <h3><i class="icon-user"></i> <%= link_to t('orcid.verbose_name'), 'http://orcid.org/' %></h3>
3
+ <h3><i class="icon-user"></i> <%= link_to t('orcid.verbose_name'), Orcid.provider.host_url %></h3>
4
4
  <% status_processor.call(current_user) do |on|%>
5
+ <% on.profile_request_in_error do |pending_request| %>
6
+ <%= render partial: 'orcid/profile_connections/profile_request_in_error', object: pending_request %>
7
+ <% end %>
5
8
  <% on.profile_request_pending do |pending_request| %>
6
9
  <%= render partial: 'orcid/profile_connections/profile_request_pending', object: pending_request %>
7
10
  <% end %>
@@ -1,11 +1,10 @@
1
1
  <div class="pending-connection">
2
- <p>
3
- You have an ORCID (<a class="orcid-profile-id" href="<%= Orcid.url_for_orcid_id(pending_connection.orcid_profile_id)%>" ><%= pending_connection.orcid_profile_id %></a>).
4
- </p>
5
- <p>However, your ORCID has not been verified by this system. There are a few possibilities:
6
- <ul>
7
- <li>You may not have claimed your ORCID. <a class="find-out-more" href="http://support.orcid.org/knowledgebase/articles/164480-creating-claiming-new-records">Find out more about claiming your ORCID.</a></li>
8
- <li>You have claimed your ORCID, but have not used it to <%= link_to('sign into this application', user_omniauth_authorize_path(provider: 'orcid'), class: 'signin-via-orcid') %>.</li>
9
- </ul>
10
- </p>
2
+ <%= t(
3
+ 'orcid.views.pending_connection',
4
+ orcid_profile_url: Orcid.url_for_orcid_id(pending_connection.orcid_profile_id),
5
+ orcid_profile_id: pending_connection.orcid_profile_id,
6
+ application_orcid_authorization_href: user_omniauth_authorize_path(provider: 'orcid'),
7
+ application_orcid_authorization_text: 'sign into this application'
8
+ ).html_safe
9
+ %>
11
10
  </div>
@@ -0,0 +1,30 @@
1
+ <div class="profile-request-error">
2
+ <div class="orcid-request">
3
+ <h3>We have the following request on record</h3>
4
+ <dl>
5
+ <dt>Given Names</dt>
6
+ <dd><%= profile_request_in_error.given_names %></dd>
7
+ <dt>Family Name</dt>
8
+ <dd><%= profile_request_in_error.family_name %></dd>
9
+ <dt>Primary Email</dt>
10
+ <dd><%= profile_request_in_error.primary_email %></dd>
11
+ <dt>Reqeusted At</dt>
12
+ <dd><time datetime='<%= profile_request_in_error.created_at.in_time_zone %>'><%= time_ago_in_words(profile_request_in_error.created_at) %></time> ago.</dd>
13
+ <dt>Requested By</dt>
14
+ <dd><%= profile_request_in_error.user %></dd>
15
+ </dl>
16
+ </div>
17
+
18
+ <div class="orcid-response">
19
+ <h3>ORCID responded with</h3>
20
+ <blockquote class="error-message"><%= profile_request_in_error.error_message %></blockquote
21
+ </div>
22
+
23
+ <div class="orcid-actions">
24
+ <%= link_to(
25
+ t('orcid/profile_connection.profile_request_destroy', scope: 'helpers.label'),
26
+ orcid.profile_request_path ,
27
+ class: 'btn cancel-profile-request', method: :delete
28
+ ) %>
29
+ </div>
30
+ </div>
@@ -1,5 +1,8 @@
1
1
  <div class="profile-request-pending">
2
- <p>We are processing your ORCID Profile Request. It was submitted
3
- <time datetime="<%= profile_request_pending.created_at.in_time_zone %>"><%= time_ago_in_words(profile_request_pending.created_at) %></time> ago.
4
- </p>
2
+ <%= t(
3
+ 'orcid.views.profile_request_pending',
4
+ datetime: profile_request_pending.created_at.in_time_zone,
5
+ time_ago_in_words: time_ago_in_words(profile_request_pending.created_at)
6
+ ).html_safe
7
+ %>
5
8
  </div>
@@ -1,17 +1,17 @@
1
1
  <%= simple_form_for(profile_connection, as: :profile_connection, url: orcid.new_profile_connection_path, method: :get, html: {class: 'search-form'}) do |f| %>
2
- <%= field_set_tag("Search ORCID Profiles") do %>
2
+ <%= field_set_tag(t('orcid.views.profile_connections.fieldsets.search_orcid_profiles')) do %>
3
3
  <% profile_connection.available_query_attribute_names.each do |field_name| %>
4
4
  <%= f.input field_name, as: :search %>
5
5
  <% end %>
6
6
  <% end %>
7
7
  <button type="submit" class="search-submit btn btn-primary" id="keyword-search-submit" tabindex="2">
8
- <i class="icon-search icon-white"></i><span>Search</span>
8
+ <i class="icon-search icon-white"></i><span><%= t('orcid.views.profile_connections.buttons.search') %></span>
9
9
  </button>
10
10
  <% end %>
11
11
 
12
12
  <% profile_connection.with_orcid_profile_candidates do |candidates| %>
13
13
  <%= simple_form_for(profile_connection, as: :profile_connection, url: orcid.profile_connections_path,) do |f| %>
14
- <%= field_set_tag("Select an ORCID Profile") do %>
14
+ <%= field_set_tag(t('orcid.views.profile_connections.fieldsets.select_an_orcid_profile')) do %>
15
15
  <%= f.collection_radio_buttons :orcid_profile_id, candidates, :id, :label %>
16
16
  <% end %>
17
17
  <%= f.submit %>
@@ -1,5 +1 @@
1
- <p><strong>Requestor:</strong> <%= profile_request.user %></p>
2
- <p><strong>Given names:</strong> <%= profile_request.given_names %></p>
3
- <p><strong>Family name:</strong> <%= profile_request.family_name %></p>
4
- <p><strong>Primary email:</strong> <%= profile_request.primary_email %></p>
5
- <p><strong>ORCID Profile ID:</strong> <%= profile_request.orcid_profile_id %></p>
1
+ <% render partial: 'orcid/profile_connections/profile_request_in_error', object: profile_request %>
@@ -23,14 +23,33 @@ en:
23
23
  orcid:
24
24
  requests:
25
25
  messages:
26
- existing_request_not_found: "Unable to find an existing Orcid Profile request. Go ahead and create one."
27
- existing_request: "You have already submitted an Orcid Profile request."
28
- previously_connected_profile: "You have already connected to an Orcid Profile (%{orcid_profile_id})."
26
+ existing_request_not_found: "Unable to find an existing orcid Profile request. Go ahead and create one."
27
+ existing_request: "You have already submitted an ORCID Profile request."
28
+ previously_connected_profile: "You have already connected to an ORCID Profile (%{orcid_profile_id})."
29
+ profile_request_created: "Your ORCID profile request has been submitted. Check your email for more information from ORCID."
30
+ profile_request_created: "Your ORCID profile request has been submitted. Check your email for more information from ORCID."
31
+ profile_request_destroyed: "Your ORCID profile request has been cancelled."
29
32
  connections:
30
33
  messages:
31
- profile_connection_not_found: "Unable to find an existing Orcid Profile connection."
32
- verified_profile_connection_exists: "You have already connected and verified your Orcid Profile (%{orcid_profile_id})."
34
+ profile_connection_not_found: "Unable to find an existing ORCID Profile connection."
35
+ verified_profile_connection_exists: "You have already connected and verified your ORCID Profile (%{orcid_profile_id})."
33
36
  verbose_name: Open Researcher and Contributor ID (ORCID)
37
+ views:
38
+ profile_connections:
39
+ fieldsets:
40
+ search_orcid_profiles: "Search ORCID Profiles"
41
+ select_an_orcid_profile: "Select an ORCID Profile"
42
+ buttons:
43
+ search: 'Search'
44
+ authenticated_connection: "<p>Your ORCID (<a class='orcid-profile-id' href='%{orcid_profile_url}'>%{orcid_profile_id}</a>) has been authenticated for this application.</p>"
45
+ profile_request_pending: "<p>We are processing your ORCID Profile Request. It was submitted <time datetime='%{datetime}'>%{time_ago_in_words}</time> ago.</p>"
46
+ pending_connection: >
47
+ <p>You have an ORCID (<a class="orcid-profile-id" href="%{orcid_profile_url}">%{orcid_profile_id}</a>).</p>
48
+ <p>However, your ORCID has not been verified by this system. There are a few possibilities:</p>
49
+ <ul>
50
+ <li>You may not have claimed your ORCID. <a class="find-out-more" href="http://support.orcid.org/knowledgebase/articles/164480-creating-claiming-new-records">Find out more about claiming your ORCID.</a></li>
51
+ <li>You have claimed your ORCID, but have not used it to <a class="signin-via-orcid" href="%{application_orcid_authorization_href}">%{application_orcid_authorization_text}</a>.</li>
52
+ </ul>
34
53
  helpers:
35
54
  label:
36
55
  orcid/profile_connection:
@@ -38,3 +57,4 @@ en:
38
57
  create_an_orcid: Create an ORCID
39
58
  look_up_your_existing_orcid: Look up your existing ORCID
40
59
  connect_button_text: Connect
60
+ profile_request_destroy: Cancel your ORCID request
@@ -1,6 +1,6 @@
1
1
  Orcid::Engine.routes.draw do
2
2
  scope module: 'orcid' do
3
- resource :profile_request, only: [:show, :new, :create]
3
+ resource :profile_request, only: [:show, :new, :create, :destroy]
4
4
  resources :profile_connections, only: [:new, :create, :index]
5
5
  end
6
6
  end
@@ -62,6 +62,12 @@ module Orcid
62
62
  return false
63
63
  end
64
64
 
65
+ def disconnect_user_and_orcid_profile(user)
66
+ authentication_model.where(provider: 'orcid', user: user).destroy_all
67
+ Orcid::ProfileRequest.where(user: user).destroy_all
68
+ true
69
+ end
70
+
65
71
  def profile_for(user)
66
72
  auth = authentication_model.where(provider: 'orcid', user: user).first
67
73
  auth && Orcid::Profile.new(auth.uid)
@@ -1,3 +1,3 @@
1
1
  module Orcid
2
- VERSION = '0.9.0'
2
+ VERSION = '0.9.1'
3
3
  end
@@ -47,6 +47,7 @@ Gem::Specification.new do |s|
47
47
  s.add_development_dependency 'rspec-html-matchers', '~> 0.5.0'
48
48
  s.add_development_dependency 'capybara'
49
49
  s.add_development_dependency 'capybara-webkit'
50
+ s.add_development_dependency 'headless'
50
51
  s.add_development_dependency 'webmock'
51
52
  s.add_development_dependency 'simplecov'
52
53
  s.add_development_dependency 'rest_client'
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Orcid::ApplicationController, type: :controller do
4
+ context '#path_for' do
5
+ it 'yields when the provided symbol is not a method' do
6
+ path_for = controller.path_for(:__obviously_missing_method__, '123') { |arg| "/abc/#{arg}" }
7
+ expect(path_for).to eq('/abc/123')
8
+ end
9
+
10
+ it 'calls the named method' do
11
+ path_for = controller.path_for(:to_s) { "/abc/#{arg}" }
12
+ expect(path_for).to eq(controller.to_s)
13
+ end
14
+ end
15
+ end
@@ -101,6 +101,7 @@ module Orcid
101
101
  expect do
102
102
  post :create, profile_request: profile_request_attributes, use_route: :orcid
103
103
  end.to change { Orcid::ProfileRequest.count }.by(1)
104
+ expect(flash[:notice]).to eq(I18n.t('orcid.requests.messages.profile_request_created'))
104
105
  expect(response).to redirect_to(orcid.profile_request_path)
105
106
  end
106
107
 
@@ -124,5 +125,22 @@ module Orcid
124
125
 
125
126
  end
126
127
  end
128
+
129
+ context 'DELETE #destroy' do
130
+ it_prompts_unauthenticated_users_for_signin(:delete, :destroy)
131
+ context 'authenticated and authorized user' do
132
+ before { sign_in(user) }
133
+
134
+ it 'should destroy any pending profile requests' do
135
+ profile_request = double(destroy: true)
136
+ Orcid::ProfileRequest.should_receive(:find_by_user).with(user).and_return(profile_request)
137
+
138
+ delete :destroy, use_route: :orcid
139
+ expect(flash[:notice]).to eq(I18n.t('orcid.requests.messages.profile_request_destroyed'))
140
+ expect(profile_request).to have_received(:destroy)
141
+ expect(response).to redirect_to(orcid.new_profile_request_path)
142
+ end
143
+ end
144
+ end
127
145
  end
128
146
  end
@@ -131,6 +131,7 @@ describe 'non-UI based interactions' , requires_net_connect: true do
131
131
  def mailinator_requests(uri)
132
132
  base_sleep_duration = ENV.fetch('MAILINATOR_SECONDS_TO_RETRY', 120).to_i
133
133
  retry_attempts = ENV.fetch('MAILINATOR_RETRY_ATTEMPTS', 6).to_i
134
+ $stdout.print "\n=-=-= Fetching the mail from #{uri}"
134
135
  (0...retry_attempts).each do |attempt|
135
136
  sleep_duration = base_sleep_duration * (attempt +1)
136
137
  $stdout.print "\n=-=-= Connecting to Mailinator. Attempt #{attempt+1}\n\tWaiting #{sleep_duration} seconds to connect: "
@@ -60,6 +60,23 @@ describe Orcid do
60
60
  end
61
61
  end
62
62
 
63
+ context '.disconnect_user_and_orcid_profile' do
64
+ it 'changes the authentication count' do
65
+ Orcid.connect_user_and_orcid_profile(user, orcid_profile_id)
66
+ expect { Orcid.disconnect_user_and_orcid_profile(user) }.
67
+ to change(Orcid.authentication_model, :count).by(-1)
68
+ end
69
+
70
+ it 'deletes any profile request' do
71
+ Orcid::ProfileRequest.create!(
72
+ user: user, given_names: 'Hello', family_name: 'World',
73
+ primary_email: 'hello@world.com', primary_email_confirmation: 'hello@world.com'
74
+ )
75
+ expect { Orcid.disconnect_user_and_orcid_profile(user) }.
76
+ to change(Orcid::ProfileRequest, :count).by(-1)
77
+ end
78
+ end
79
+
63
80
  context '.access_token_for' do
64
81
  let(:client) { double("Client")}
65
82
  let(:token) { double('Token') }
@@ -4,21 +4,21 @@ require 'orcid/profile_connection'
4
4
  # :nodoc:
5
5
  module Orcid
6
6
  describe ProfileConnection do
7
- let(:email) { 'test@hello.com' }
7
+ let(:text) { 'test@hello.com' }
8
8
  let(:dois) { '123' }
9
9
  let(:user) { double('User') }
10
10
  let(:profile_query_service) { double('Profile Lookup Service') }
11
11
  let(:persister) { double('Persister') }
12
12
 
13
13
  subject do
14
- Orcid::ProfileConnection.new(email: email, user: user).tap do |pc|
14
+ Orcid::ProfileConnection.new(text: text, user: user).tap do |pc|
15
15
  pc.persister = persister
16
16
  pc.profile_query_service = profile_query_service
17
17
  end
18
18
  end
19
19
 
20
20
  its(:default_persister) { should respond_to(:call) }
21
- its(:email) { should eq email }
21
+ its(:text) { should eq text }
22
22
  its(:to_model) { should eq subject }
23
23
  its(:user) { should eq user }
24
24
  its(:persisted?) { should eq false }
@@ -26,20 +26,18 @@ module Orcid
26
26
 
27
27
  context '.available_query_attribute_names' do
28
28
  subject { Orcid::ProfileConnection.new.available_query_attribute_names }
29
- it { should include(:email) }
30
29
  it { should include(:text) }
31
- it { should include(:digital_object_ids) }
32
30
  end
33
31
 
34
32
  context '#query_attributes' do
35
33
  subject do
36
34
  Orcid::ProfileConnection.new(
37
- email: email, user: user, digital_object_ids: dois
35
+ text: text, user: user, digital_object_ids: dois
38
36
  )
39
37
  end
40
38
  its(:query_attributes) do
41
39
  should eq(
42
- 'email' => email, 'text' => nil, 'digital-object-ids' => dois
40
+ 'text' => text
43
41
  )
44
42
  end
45
43
  end
@@ -50,7 +48,7 @@ module Orcid
50
48
  its(:query_requested?) { should eq false }
51
49
  end
52
50
  context 'with attribute set' do
53
- subject { Orcid::ProfileConnection.new(email: email, user: user) }
51
+ subject { Orcid::ProfileConnection.new(text: text, user: user) }
54
52
  its(:query_requested?) { should eq true }
55
53
  end
56
54
  end
@@ -76,10 +74,10 @@ module Orcid
76
74
  end
77
75
 
78
76
  context '#with_orcid_profile_candidates' do
79
- context 'with an email' do
77
+ context 'with an text' do
80
78
 
81
79
  it 'should yield the query response' do
82
- subject.email = email
80
+ subject.text = text
83
81
 
84
82
  profile_query_service.
85
83
  should_receive(:call).
@@ -91,9 +89,9 @@ module Orcid
91
89
  end
92
90
  end
93
91
 
94
- context 'without an email' do
92
+ context 'without an text' do
95
93
  it 'should not yield' do
96
- subject.email = nil
94
+ subject.text = nil
97
95
  profile_query_service.stub(:call).and_return(:query_response)
98
96
 
99
97
  expect { |b| subject.with_orcid_profile_candidates(&b) }.
@@ -37,12 +37,20 @@ module Orcid
37
37
  end
38
38
  end
39
39
 
40
- context '#validation_error_on_profile_creation' do
40
+ context '#error_on_profile_creation' do
41
41
  it 'should update profile request' do
42
42
  error_message = '123'
43
43
  # Don't want to hit the database
44
44
  subject.should_receive(:update_column).with(:response_text, error_message)
45
- subject.validation_error_on_profile_creation(error_message)
45
+ subject.should_receive(:update_column).with(:response_status, ProfileRequest::ERROR_STATUS)
46
+ subject.error_on_profile_creation(error_message)
47
+ end
48
+ end
49
+
50
+ context '#error_on_profile_creation?' do
51
+ it 'should be true if there is a response text' do
52
+ subject.response_status = ProfileRequest::ERROR_STATUS
53
+ expect(subject.error_on_profile_creation?).to be_truthy
46
54
  end
47
55
  end
48
56
  end
@@ -12,7 +12,8 @@ module Orcid
12
12
  :unknown,
13
13
  :authenticated_connection,
14
14
  :pending_connection,
15
- :profile_request_pending
15
+ :profile_request_pending,
16
+ :profile_request_in_error
16
17
  )
17
18
  end
18
19
  Given(:subject) do
@@ -55,11 +56,22 @@ module Orcid
55
56
 
56
57
  context 'and does not have a profile' do
57
58
  context 'but has submitted a request' do
58
- Given(:request) { double('ProfileRequest') }
59
+ Given(:request) { double('ProfileRequest', :error_on_profile_creation? => error_on_creation) }
59
60
  Given(:request_finder) { double('RequestFinder', call: request) }
60
- When(:status) { subject.status }
61
- Then { expect(status).to eq :profile_request_pending }
62
- And { expect(callback.invoked).to eq [:profile_request_pending, request] }
61
+
62
+ context "and there weren't problems with the request" do
63
+ Given(:error_on_creation) { false }
64
+ When(:status) { subject.status }
65
+ Then { expect(status).to eq :profile_request_pending }
66
+ And { expect(callback.invoked).to eq [:profile_request_pending, request] }
67
+ end
68
+
69
+ context "and there were problems with the request" do
70
+ Given(:error_on_creation) { true }
71
+ When(:status) { subject.status }
72
+ Then { expect(status).to eq :profile_request_in_error }
73
+ And { expect(callback.invoked).to eq [:profile_request_in_error, request] }
74
+ end
63
75
  end
64
76
  context 'user does not have a request' do
65
77
  When(:status) { subject.status }
@@ -8,7 +8,7 @@ module Orcid
8
8
  end
9
9
  Given(:logger) { double('Logger', notice: true) }
10
10
  Given(:user) { 'user' }
11
- Given(:profile_request) { double('ProfileRequest', user: user, successful_profile_creation: true, validation_error_on_profile_creation: true) }
11
+ Given(:profile_request) { double('ProfileRequest', user: user, successful_profile_creation: true, error_on_profile_creation: true) }
12
12
  Given(:remote_service) { double('Remote Service') }
13
13
  Given(:callback_responder) do
14
14
  double('Responder', unknown: true, authenticated_connection: true, profile_request_pending: true, pending_connection: true)
@@ -39,7 +39,7 @@ module Orcid
39
39
  Given(:remote_service_handler) { double('Handler', success: true, failure: true, orcid_validation_error: true) }
40
40
  Given(:attributes) { { given_names: 'Given', family_name: 'Family', primary_email: 'email@email.email' } }
41
41
  Given(:profile_request) do
42
- double('ProfileRequest', user: user, attributes: attributes, successful_profile_creation: true, validation_error_on_profile_creation: true)
42
+ double('ProfileRequest', user: user, attributes: attributes, successful_profile_creation: true, error_on_profile_creation: true)
43
43
  end
44
44
  before do
45
45
  callback_responder.stub(:profile_request_pending).and_yield(profile_request)
@@ -60,7 +60,7 @@ module Orcid
60
60
  end
61
61
  Given(:error_message) { 'Error Message' }
62
62
  When { coordinator.call }
63
- Then { expect(profile_request).to have_received(:validation_error_on_profile_creation).with(error_message) }
63
+ Then { expect(profile_request).to have_received(:error_on_profile_creation).with(error_message) }
64
64
  end
65
65
  end
66
66
 
@@ -70,14 +70,14 @@ module Orcid
70
70
  Then { expect(instantiation).to have_failed(MissingUserForProfileRequest) }
71
71
  end
72
72
 
73
- context 'requires a validation_error_on_profile_creation for the profile_request' do
73
+ context 'requires a error_on_profile_creation for the profile_request' do
74
74
  Given(:profile_request) { double('ProfileRequest', user: 'user') }
75
75
  When(:instantiation) { described_class.new(profile_request) }
76
76
  Then { expect(instantiation).to have_failed(ProfileRequestMethodExpectedError) }
77
77
  end
78
78
 
79
- context 'requires a validation_error_on_profile_creation for the profile_request' do
80
- Given(:profile_request) { double('ProfileRequest', user: 'user', validation_error_on_profile_creation: true) }
79
+ context 'requires a error_on_profile_creation for the profile_request' do
80
+ Given(:profile_request) { double('ProfileRequest', user: 'user', error_on_profile_creation: true) }
81
81
  When(:instantiation) { described_class.new(profile_request) }
82
82
  Then { expect(instantiation).to have_failed(ProfileRequestMethodExpectedError) }
83
83
  end
@@ -33,6 +33,18 @@ require 'rspec-html-matchers'
33
33
  require 'webmock/rspec'
34
34
  require 'capybara'
35
35
  require 'capybara-webkit'
36
+ require 'headless'
37
+
38
+ Capybara.register_driver :webkit do |app|
39
+ Capybara::Webkit::Driver.new(app, :ignore_ssl_errors => true)
40
+ end
41
+
42
+ Capybara.javascript_driver = :webkit
43
+
44
+ if ENV['TRAVIS'] || ENV['JENKINS']
45
+ headless = Headless.new
46
+ headless.start
47
+ end
36
48
 
37
49
  # Requires supporting ruby files with custom matchers and macros, etc,
38
50
  # in spec/support/ and its subdirectories.
@@ -10,7 +10,8 @@ describe 'orcid/profile_connections/_orcid_connector.html.erb' do
10
10
  profile_request_pending: true,
11
11
  unknown: true,
12
12
  authenticated_connection: true,
13
- pending_connection: true
13
+ pending_connection: true,
14
+ profile_request_in_error: true
14
15
  )
15
16
  end
16
17
  def render_with_params
@@ -42,6 +43,16 @@ describe 'orcid/profile_connections/_orcid_connector.html.erb' do
42
43
  expect(rendered).to have_tag('.orcid-connector')
43
44
  end
44
45
  end
46
+ context 'with :profile_request_in_error status' do
47
+ let(:pending_request) { Orcid::ProfileRequest.new(created_at: Time.now) }
48
+ it 'renders the options to view the pending profile request' do
49
+ expect(handler).to receive(:profile_request_in_error).and_yield(pending_request)
50
+ render_with_params
51
+
52
+ expect(view).to render_template(partial: 'orcid/profile_connections/_profile_request_in_error')
53
+ expect(rendered).to have_tag('.orcid-connector')
54
+ end
55
+ end
45
56
  context 'with :authenticated_connection status' do
46
57
  let(:profile) { double('Profile', orcid_profile_id: '123-456') }
47
58
  it 'renders the options to view the authenticated connection' do
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'orcid/profile_connections/_profile_request_in_error.html.erb' do
4
+ Given(:profile_request) { Orcid::ProfileRequest.new(error_message: 'Ouch!', created_at: created_at) }
5
+ Given(:created_at) { Date.today }
6
+
7
+ When(:rendered) do
8
+ render(
9
+ partial: 'orcid/profile_connections/profile_request_in_error',
10
+ object: profile_request
11
+ )
12
+ end
13
+
14
+ Then do
15
+ expect(rendered).to have_tag('.profile-request-error') do
16
+ with_tag('.error-message', text: 'Ouch!')
17
+ with_tag('.cancel-profile-request', with: { :href => orcid.profile_request_path, 'data-method' => 'delete' })
18
+ end
19
+ end
20
+
21
+ end
metadata CHANGED
@@ -1,377 +1,391 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orcid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
11
+ date: 2014-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: figaro
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: devise-multi_auth
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: omniauth-orcid
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mappy
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: virtus
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: email_validator
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simple_form
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: sqlite3
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: engine_cart
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rspec-rails
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ~>
158
158
  - !ruby/object:Gem::Version
159
159
  version: '2.99'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: '2.99'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: database_cleaner
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: factory_girl
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rspec-html-matchers
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - "~>"
199
+ - - ~>
200
200
  - !ruby/object:Gem::Version
201
201
  version: 0.5.0
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - "~>"
206
+ - - ~>
207
207
  - !ruby/object:Gem::Version
208
208
  version: 0.5.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: capybara
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - ">="
213
+ - - '>='
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ">="
220
+ - - '>='
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: capybara-webkit
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ">="
227
+ - - '>='
228
228
  - !ruby/object:Gem::Version
229
229
  version: '0'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - ">="
234
+ - - '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: headless
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
235
249
  - !ruby/object:Gem::Version
236
250
  version: '0'
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: webmock
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
- - - ">="
255
+ - - '>='
242
256
  - !ruby/object:Gem::Version
243
257
  version: '0'
244
258
  type: :development
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
- - - ">="
262
+ - - '>='
249
263
  - !ruby/object:Gem::Version
250
264
  version: '0'
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: simplecov
253
267
  requirement: !ruby/object:Gem::Requirement
254
268
  requirements:
255
- - - ">="
269
+ - - '>='
256
270
  - !ruby/object:Gem::Version
257
271
  version: '0'
258
272
  type: :development
259
273
  prerelease: false
260
274
  version_requirements: !ruby/object:Gem::Requirement
261
275
  requirements:
262
- - - ">="
276
+ - - '>='
263
277
  - !ruby/object:Gem::Version
264
278
  version: '0'
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: rest_client
267
281
  requirement: !ruby/object:Gem::Requirement
268
282
  requirements:
269
- - - ">="
283
+ - - '>='
270
284
  - !ruby/object:Gem::Version
271
285
  version: '0'
272
286
  type: :development
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
- - - ">="
290
+ - - '>='
277
291
  - !ruby/object:Gem::Version
278
292
  version: '0'
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: rspec-given
281
295
  requirement: !ruby/object:Gem::Requirement
282
296
  requirements:
283
- - - ">="
297
+ - - '>='
284
298
  - !ruby/object:Gem::Version
285
299
  version: '0'
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
- - - ">="
304
+ - - '>='
291
305
  - !ruby/object:Gem::Version
292
306
  version: '0'
293
307
  - !ruby/object:Gem::Dependency
294
308
  name: rspec
295
309
  requirement: !ruby/object:Gem::Requirement
296
310
  requirements:
297
- - - "~>"
311
+ - - ~>
298
312
  - !ruby/object:Gem::Version
299
313
  version: '2.99'
300
314
  type: :development
301
315
  prerelease: false
302
316
  version_requirements: !ruby/object:Gem::Requirement
303
317
  requirements:
304
- - - "~>"
318
+ - - ~>
305
319
  - !ruby/object:Gem::Version
306
320
  version: '2.99'
307
321
  - !ruby/object:Gem::Dependency
308
322
  name: rspec-mocks
309
323
  requirement: !ruby/object:Gem::Requirement
310
324
  requirements:
311
- - - "~>"
325
+ - - ~>
312
326
  - !ruby/object:Gem::Version
313
327
  version: '2.99'
314
328
  type: :development
315
329
  prerelease: false
316
330
  version_requirements: !ruby/object:Gem::Requirement
317
331
  requirements:
318
- - - "~>"
332
+ - - ~>
319
333
  - !ruby/object:Gem::Version
320
334
  version: '2.99'
321
335
  - !ruby/object:Gem::Dependency
322
336
  name: rspec-core
323
337
  requirement: !ruby/object:Gem::Requirement
324
338
  requirements:
325
- - - "~>"
339
+ - - ~>
326
340
  - !ruby/object:Gem::Version
327
341
  version: '2.99'
328
342
  type: :development
329
343
  prerelease: false
330
344
  version_requirements: !ruby/object:Gem::Requirement
331
345
  requirements:
332
- - - "~>"
346
+ - - ~>
333
347
  - !ruby/object:Gem::Version
334
348
  version: '2.99'
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: rspec-expectations
337
351
  requirement: !ruby/object:Gem::Requirement
338
352
  requirements:
339
- - - "~>"
353
+ - - ~>
340
354
  - !ruby/object:Gem::Version
341
355
  version: '2.99'
342
356
  type: :development
343
357
  prerelease: false
344
358
  version_requirements: !ruby/object:Gem::Requirement
345
359
  requirements:
346
- - - "~>"
360
+ - - ~>
347
361
  - !ruby/object:Gem::Version
348
362
  version: '2.99'
349
363
  - !ruby/object:Gem::Dependency
350
364
  name: rspec-its
351
365
  requirement: !ruby/object:Gem::Requirement
352
366
  requirements:
353
- - - ">="
367
+ - - '>='
354
368
  - !ruby/object:Gem::Version
355
369
  version: '0'
356
370
  type: :development
357
371
  prerelease: false
358
372
  version_requirements: !ruby/object:Gem::Requirement
359
373
  requirements:
360
- - - ">="
374
+ - - '>='
361
375
  - !ruby/object:Gem::Version
362
376
  version: '0'
363
377
  - !ruby/object:Gem::Dependency
364
378
  name: rspec-activemodel-mocks
365
379
  requirement: !ruby/object:Gem::Requirement
366
380
  requirements:
367
- - - ">="
381
+ - - '>='
368
382
  - !ruby/object:Gem::Version
369
383
  version: '0'
370
384
  type: :development
371
385
  prerelease: false
372
386
  version_requirements: !ruby/object:Gem::Requirement
373
387
  requirements:
374
- - - ">="
388
+ - - '>='
375
389
  - !ruby/object:Gem::Version
376
390
  version: '0'
377
391
  description: A Rails engine for orcid.org integration.
@@ -381,11 +395,11 @@ executables: []
381
395
  extensions: []
382
396
  extra_rdoc_files: []
383
397
  files:
384
- - ".coveralls.yml"
385
- - ".gitignore"
386
- - ".hound.yml"
387
- - ".mailmap"
388
- - ".travis.yml"
398
+ - .coveralls.yml
399
+ - .gitignore
400
+ - .hound.yml
401
+ - .mailmap
402
+ - .travis.yml
389
403
  - CONTRIBUTING.md
390
404
  - Gemfile
391
405
  - LICENSE
@@ -419,6 +433,7 @@ files:
419
433
  - app/views/orcid/profile_connections/_options_to_connect_orcid_profile.html.erb
420
434
  - app/views/orcid/profile_connections/_orcid_connector.html.erb
421
435
  - app/views/orcid/profile_connections/_pending_connection.html.erb
436
+ - app/views/orcid/profile_connections/_profile_request_in_error.html.erb
422
437
  - app/views/orcid/profile_connections/_profile_request_pending.html.erb
423
438
  - app/views/orcid/profile_connections/new.html.erb
424
439
  - app/views/orcid/profile_requests/new.html.erb
@@ -444,6 +459,7 @@ files:
444
459
  - lib/tasks/orcid_tasks.rake
445
460
  - orcid.gemspec
446
461
  - script/fast_specs
462
+ - spec/controllers/orcid/application_controller_spec.rb
447
463
  - spec/controllers/orcid/profile_connections_controller_spec.rb
448
464
  - spec/controllers/orcid/profile_requests_controller_spec.rb
449
465
  - spec/factories/orcid_profile_requests.rb
@@ -487,6 +503,7 @@ files:
487
503
  - spec/views/orcid/profile_connections/_options_to_connect_orcid_profile.html.erb_spec.rb
488
504
  - spec/views/orcid/profile_connections/_orcid_connector.html.erb_spec.rb
489
505
  - spec/views/orcid/profile_connections/_pending_connection.html.erb_spec.rb
506
+ - spec/views/orcid/profile_connections/_profile_request_in_error.html.erb_spec.rb
490
507
  - spec/views/orcid/profile_connections/_profile_request_pending.html.erb_spec.rb
491
508
  - spec/views/orcid/profile_connections/new.html.erb_spec.rb
492
509
  - spec/views/orcid/profile_requests/new.html.erb_spec.rb
@@ -501,12 +518,12 @@ require_paths:
501
518
  - lib
502
519
  required_ruby_version: !ruby/object:Gem::Requirement
503
520
  requirements:
504
- - - ">="
521
+ - - '>='
505
522
  - !ruby/object:Gem::Version
506
523
  version: '0'
507
524
  required_rubygems_version: !ruby/object:Gem::Requirement
508
525
  requirements:
509
- - - ">="
526
+ - - '>='
510
527
  - !ruby/object:Gem::Version
511
528
  version: '0'
512
529
  requirements: []
@@ -516,6 +533,7 @@ signing_key:
516
533
  specification_version: 4
517
534
  summary: A Rails engine for orcid.org integration.
518
535
  test_files:
536
+ - spec/controllers/orcid/application_controller_spec.rb
519
537
  - spec/controllers/orcid/profile_connections_controller_spec.rb
520
538
  - spec/controllers/orcid/profile_requests_controller_spec.rb
521
539
  - spec/factories/orcid_profile_requests.rb
@@ -559,6 +577,7 @@ test_files:
559
577
  - spec/views/orcid/profile_connections/_options_to_connect_orcid_profile.html.erb_spec.rb
560
578
  - spec/views/orcid/profile_connections/_orcid_connector.html.erb_spec.rb
561
579
  - spec/views/orcid/profile_connections/_pending_connection.html.erb_spec.rb
580
+ - spec/views/orcid/profile_connections/_profile_request_in_error.html.erb_spec.rb
562
581
  - spec/views/orcid/profile_connections/_profile_request_pending.html.erb_spec.rb
563
582
  - spec/views/orcid/profile_connections/new.html.erb_spec.rb
564
583
  - spec/views/orcid/profile_requests/new.html.erb_spec.rb