Sha256: a4e7da6649895dc19d6782f16973e1735563d163f0dd316f02bcfc6ca65e9261

Contents?: true

Size: 1.22 KB

Versions: 7

Compression:

Stored size: 1.22 KB

Contents

RSpec.describe Sufia::TrophiesController do
  describe "#toggle_trophy" do
    let(:user) { create(:user) }
    let(:work) { create(:work, user: user) }

    context "for a work we have edit access on" do
      before do
        sign_in user
      end
      it "creates a trophy for a work" do
        post :toggle_trophy, params: { id: work.id }
        expect(response).to be_success
        json = JSON.parse(response.body)
        expect(json['user_id']).to eq user.id
        expect(json['work_id']).to eq work.id
      end
      context 'where the trophy already exists' do
        before do
          user.trophies.create(work_id: work.id)
        end
        it 'destroys the trophy' do
          expect { post :toggle_trophy, params: { id: work.id } }
            .to change { Trophy.count }.by(-1)

          expect(response).to be_success
          json = JSON.parse(response.body)
          expect(json['user_id']).to eq user.id
          expect(json['work_id']).to eq work.id
        end
      end
    end

    context "for a work that we don't have edit access on" do
      it "does not create a trophy" do
        post :toggle_trophy, params: { id: work.id }
        expect(response).not_to be_success
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sufia-7.4.1 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.4.0 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.3.1 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.3.0 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.3.0.rc3 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.3.0.rc2 spec/controllers/sufia/trophies_controller_spec.rb
sufia-7.3.0.rc1 spec/controllers/sufia/trophies_controller_spec.rb