2018-12-10 20:37:38 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'rails_helper'
|
|
|
|
|
2023-05-04 03:49:53 +00:00
|
|
|
RSpec.describe Admin::TagsController do
|
2018-12-10 20:37:38 +00:00
|
|
|
render_views
|
|
|
|
|
|
|
|
before do
|
2022-07-05 00:41:40 +00:00
|
|
|
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin'))
|
2018-12-10 20:37:38 +00:00
|
|
|
end
|
|
|
|
|
2024-07-29 15:49:44 +00:00
|
|
|
describe 'GET #index' do
|
|
|
|
before do
|
|
|
|
Fabricate(:tag)
|
|
|
|
|
|
|
|
tag_filter = instance_double(Admin::TagFilter, results: Tag.all)
|
|
|
|
allow(Admin::TagFilter).to receive(:new).and_return(tag_filter)
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:params) { { order: 'newest' } }
|
|
|
|
|
|
|
|
it 'returns http success' do
|
|
|
|
get :index
|
|
|
|
|
|
|
|
expect(response).to have_http_status(200)
|
|
|
|
expect(response).to render_template(:index)
|
|
|
|
|
|
|
|
expect(Admin::TagFilter)
|
|
|
|
.to have_received(:new)
|
|
|
|
.with(hash_including(params))
|
|
|
|
end
|
|
|
|
|
|
|
|
describe 'with filters' do
|
|
|
|
let(:params) { { order: 'newest', name: 'test' } }
|
|
|
|
|
|
|
|
it 'returns http success' do
|
|
|
|
get :index, params: { name: 'test' }
|
|
|
|
|
|
|
|
expect(response).to have_http_status(200)
|
|
|
|
expect(response).to render_template(:index)
|
|
|
|
|
|
|
|
expect(Admin::TagFilter)
|
|
|
|
.to have_received(:new)
|
|
|
|
.with(hash_including(params))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-03-26 17:36:16 +00:00
|
|
|
describe 'GET #show' do
|
|
|
|
let!(:tag) { Fabricate(:tag) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
get :show, params: { id: tag.id }
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns status 200' do
|
|
|
|
expect(response).to have_http_status(200)
|
|
|
|
end
|
|
|
|
end
|
2023-10-16 15:20:28 +00:00
|
|
|
|
|
|
|
describe 'PUT #update' do
|
|
|
|
let!(:tag) { Fabricate(:tag, listable: false) }
|
|
|
|
|
|
|
|
context 'with valid params' do
|
|
|
|
it 'updates the tag' do
|
|
|
|
put :update, params: { id: tag.id, tag: { listable: '1' } }
|
|
|
|
|
|
|
|
expect(response).to redirect_to(admin_tag_path(tag.id))
|
|
|
|
expect(tag.reload).to be_listable
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with invalid params' do
|
|
|
|
it 'does not update the tag' do
|
|
|
|
put :update, params: { id: tag.id, tag: { name: 'cant-change-name' } }
|
|
|
|
|
|
|
|
expect(response).to have_http_status(200)
|
|
|
|
expect(response).to render_template(:show)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2018-12-10 20:37:38 +00:00
|
|
|
end
|