digital_objects_controller_spec.rb
1 require 'spec_helper' 2 3 describe DigitalObjectsController, type: :controller do 4 before(:all) do 5 @repo = create(:repo, repo_code: "do_test_#{Time.now.to_i}", 6 publish: true) 7 set_repo @repo 8 9 @do = create(:digital_object, publish: true) 10 @unpublished_do = create(:digital_object) 11 @doc1 = create(:digital_object_component, 12 publish: true, digital_object: { ref: @do.uri }) 13 @doc2 = create(:digital_object_component, 14 publish: true, digital_object: { ref: @do.uri }) 15 @doc3 = create(:digital_object_component, 16 publish: true, digital_object: { ref: @do.uri }) 17 18 @grandchildren = (0..10).map do 19 create(:digital_object_component, 20 publish: true, 21 digital_object: { ref: @do.uri }, 22 parent: { ref: [@doc1, @doc2, @doc3].sample.uri }) 23 end 24 25 @great_grandchildren = @grandchildren.map do |gc| 26 (0..3).map do 27 create(:digital_object_component, 28 publish: true, 29 digital_object: { ref: @do.uri }, 30 parent: { ref: gc.uri }) 31 end 32 end.flatten 33 34 run_indexers 35 end 36 37 38 describe 'Tree Node Actions' do 39 it 'should get the tree root' do 40 get(:tree_root, params: { rid: @repo.id, id: @do.id }) 41 expect(response.status).to eq(200) 42 end 43 44 it 'should return a 404 when it cannot find the tree root' do 45 get(:tree_root, params: { rid: @repo.id, id: 'notaId' }) 46 expect(response.status).to eq(404) 47 end 48 49 it 'should get the tree node for an Digital Object Component' do 50 get(:tree_node, params: { rid: @repo.id, id: @do.id, 51 node: @doc1.uri }) 52 expect(response.status).to eq(200) 53 end 54 55 it 'should return a 404 when it cannot find the Node' do 56 get(:tree_node, params: { rid: @repo.id, id: @do.id, 57 node: @do.uri }) 58 expect(response.status).to eq(404) 59 end 60 61 it 'should get the tree waypoint for a digital object' do 62 get(:tree_waypoint, params: { rid: @repo.id, id: @do.id, 63 node: nil, offset: 0 }) 64 expect(response.status).to eq(200) 65 end 66 67 it 'should return a 404 when it cannot find the tree waypoint' do 68 get(:tree_waypoint, params: { rid: @repo.id, id: @do.id, 69 node: @do.uri, offset: 100 }) 70 expect(response.status).to eq(404) 71 end 72 73 it 'should get the tree node from the root' do 74 get(:tree_node_from_root, params: { rid: @repo.id, id: @do.id, 75 node_ids: [@doc1, @doc2, @doc3].map(&:id) }) 76 expect(response.status).to eq(200) 77 end 78 79 it 'should return a 404 when it cannot find the tree node from root' do 80 get(:tree_node_from_root, params: { rid: @repo.id, id: @do.id, 81 node_ids: ['notaId'] }) 82 expect(response.status).to eq(404) 83 end 84 end 85 86 describe "Digital Object" do 87 render_views 88 89 img_uri = 'http://foo.com/image.jpg' 90 91 before(:all) do 92 @do2 = create(:digital_object, publish: true, :file_versions => [ 93 build(:file_version, { 94 :publish => true, 95 :is_representative => true, 96 :file_uri => img_uri, 97 :use_statement => 'image-service' 98 }) 99 ]) 100 101 run_indexers 102 end 103 104 it 'should render the representative file version image when one is set' do 105 get(:tree_root, params: { rid: @repo.id, id: @do2.id }) 106 107 expect(response.body).to match(img_uri) 108 end 109 110 end 111 112 end