/ public / spec / controllers / digital_objects_controller_spec.rb
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