• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / orangelight / 18f28673-0269-4bee-93b4-ce25436f7533

24 Oct 2024 01:19PM UTC coverage: 96.861% (-0.02%) from 96.876%
18f28673-0269-4bee-93b4-ce25436f7533

Pull #4464

circleci

maxkadel
Move request form specs into marquand-specific test

- university_id is set to user.uid elsewhere, give a sane fallback to make testing easier
Pull Request #4464: Move Marquand requests feature specs into their own spec

1 of 1 new or added line in 1 file covered. (100.0%)

1 existing line in 1 file now uncovered.

6110 of 6308 relevant lines covered (96.86%)

1502.39 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.04
/app/controllers/account_controller.rb
1
# frozen_string_literal: true
2
require './lib/orangelight/illiad_patron_client.rb'
3✔
3
require './lib/orangelight/illiad_account.rb'
3✔
4

5
class AccountController < ApplicationController
3✔
6
  include ApplicationHelper
3✔
7

8
  before_action :read_only_redirect, except: [:redirect_to_alma, :user_id]
3✔
9
  before_action :check_for_authentication_provider, except: [:redirect_to_alma, :user_id]
3✔
10
  before_action :verify_user, except: [:redirect_to_alma, :user_id]
3✔
11

12
  def index
3✔
13
    redirect_to digitization_requests_path
1✔
14
  end
15

16
  def digitization_requests
3✔
17
    set_patron
5✔
18
  end
19

20
  def cancel_ill_requests
3✔
21
    set_patron
3✔
22
    response = Orangelight::IlliadPatronClient.new(@patron).cancel_ill_requests(params[:cancel_requests]) unless params[:cancel_requests].nil?
3✔
23
    illiad_patron_client(@patron)
3✔
24
    respond_to do |format|
3✔
25
      if params[:cancel_requests].nil?
3✔
26
        format.js { flash.now[:error] = I18n.t('blacklight.account.cancel_no_items') }
2✔
27
      elsif cancel_ill_success(response)
2✔
28
        format.js { flash.now[:success] = I18n.t('blacklight.account.cancel_success') }
2✔
29
      else
30
        format.js { flash.now[:error] = I18n.t('blacklight.account.cancel_fail') }
2✔
31
      end
32
    end
33
  end
34

35
  def redirect_to_alma
3✔
36
    render "redirect_to_alma"
2✔
37
  end
38

39
  def user_id
3✔
UNCOV
40
    render json: { user_id: current_user&.uid }
×
41
  end
42

43
  protected
3✔
44

45
    def read_only_redirect
3✔
46
      if Orangelight.read_only_mode
11✔
47
        flash[:notice] = 'Account login unavailable during maintenace.'
1✔
48
        redirect_to(root_url) && return
1✔
49
      end
50
    end
51

52
    def check_for_authentication_provider
3✔
53
      raise ActionController::RoutingError, 'Not Found' unless has_user_authentication_provider?
10✔
54
    end
55

56
    def verify_user
3✔
57
      unless current_user
10✔
58
        flash[:error] = I18n.t('blacklight.saved_searches.need_login') &&
1✔
59
                        raise(Blacklight::Exceptions::AccessDenied)
60
      end
61
    end
62

63
    ## For local dev purposes hardcode a net id string in place of current_user.uid
64
    ## in this method. Hacky, but convienent to see what "real" data looks like for
65
    ## edge case patrons.
66
    def set_patron
3✔
67
      @netid = current_user.uid
8✔
68
      @patron = current_patron(current_user)
8✔
69
      illiad_patron_client(@patron)
8✔
70
    end
71

72
    def illiad_patron_client(patron)
3✔
73
      @illiad_transactions = []
11✔
74
      return unless patron && current_user.cas_provider?
11✔
75

76
      @illiad_account = Orangelight::IlliadAccount.new(patron)
9✔
77
      return unless @illiad_account.verify_user
9✔
78

79
      @illiad_transactions = Orangelight::IlliadPatronClient.new(patron).outstanding_ill_requests
8✔
80
    end
81

82
    def cancel_ill_success(response)
3✔
83
      bodies = response.map { |rep| JSON.parse(rep.body) }
4✔
84
      bodies.reject { |body| body['TransactionStatus'] =~ /^Cancelled/ }.empty?
4✔
85
    end
86

87
  private
3✔
88

89
    def current_patron(user)
3✔
90
      Bibdata.get_patron(user, ldap: false)
12✔
91
    end
92
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc