Initial commit
This commit is contained in:
88
spec/api/v2/resource/labels_spec.rb
Normal file
88
spec/api/v2/resource/labels_spec.rb
Normal file
@@ -0,0 +1,88 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'Labels API.' do
|
||||
include_context 'bearer authentication'
|
||||
let!(:create_member_permission) do
|
||||
create :permission,
|
||||
role: 'member'
|
||||
end
|
||||
let!(:create_admin_permission) do
|
||||
create :permission,
|
||||
role: 'admin'
|
||||
end
|
||||
let(:post_params) do
|
||||
{
|
||||
key: ::Faker::Internet.slug(glue: '-'),
|
||||
value: ::Faker::Internet.slug(glue: '-')
|
||||
}
|
||||
end
|
||||
|
||||
context 'Happy paths for the current user.' do
|
||||
let(:test_user) { create(:user, role: "admin") }
|
||||
let!(:label) { create :label, user: test_user }
|
||||
let!(:label2) { create :label, user: test_user }
|
||||
let!(:label3) { create :label, user: test_user }
|
||||
|
||||
it 'Return lables for current user' do
|
||||
get '/api/v2/resource/labels', headers: auth_header
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(json_body.size).to eq(3)
|
||||
expect(json_body.last[:key]).to eq(label3.key)
|
||||
end
|
||||
|
||||
it 'Return a label by key' do
|
||||
get "/api/v2/resource/labels/#{label.key}", headers: auth_header
|
||||
expect(response.status).to eq(200)
|
||||
expect(json_body[:key]).to eq(label.key)
|
||||
end
|
||||
|
||||
it 'Create a label' do
|
||||
post '/api/v2/resource/labels', params: post_params, headers: auth_header
|
||||
expect(response.status).to eq(201)
|
||||
persisted = Label.find_by(key: json_body[:key])
|
||||
expect(persisted.key).to eq(post_params[:key])
|
||||
expect(persisted.value).to eq(post_params[:value])
|
||||
expect(persisted.scope).to eq('public')
|
||||
expect(persisted.user_id).to eq(test_user.id)
|
||||
end
|
||||
|
||||
it 'Update a label' do
|
||||
patch "/api/v2/resource/labels/#{label.key}", params: post_params, headers: auth_header
|
||||
expect(response.status).to eq(200)
|
||||
persisted = Label.find_by(key: label.key)
|
||||
expect(persisted.value).to eq(post_params[:value])
|
||||
expect(persisted.scope).to eq('public')
|
||||
end
|
||||
|
||||
it 'Delete a label' do
|
||||
delete "/api/v2/resource/labels/#{label.key}", headers: auth_header
|
||||
expect(response.status).to eq(204)
|
||||
expect(Label.find_by(key: label.key)).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'Errors.' do
|
||||
let(:test_user) { create(:user, role: "admin") }
|
||||
let!(:label) { create :label, user: test_user }
|
||||
|
||||
it 'Respond with errors on create if existing key is used for current user' do
|
||||
post '/api/v2/resource/labels', params: post_params.merge(key: label.key), headers: auth_header
|
||||
expect(response.status).to eq(422)
|
||||
expect(response.body).to be_include('key.taken')
|
||||
end
|
||||
|
||||
it 'Respond with error if attempted to update a private label' do
|
||||
label.update(scope: 'private')
|
||||
patch "/api/v2/resource/labels/#{label.key}", params: post_params, headers: auth_header
|
||||
expect(response.status).to eq(400)
|
||||
end
|
||||
|
||||
it 'Respond with error if key not found' do
|
||||
get '/api/v2/resource/labels/blah', headers: auth_header
|
||||
expect(response.status).to eq(404)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user