From 10b12815c8a7612e2ec602a60b4e73e46753b60a Mon Sep 17 00:00:00 2001 From: Greg Kostin Date: Mon, 10 Jun 2019 16:29:10 -0400 Subject: [PATCH] specs (#16) --- app/models/lib_ptg_folder.rb | 2 + spec/models/lib_ptg_folder_spec.rb | 12 +++- spec/requests/lib_ptg_folders_spec.rb | 85 +++++++++++++++++++++++++-- 3 files changed, 94 insertions(+), 5 deletions(-) diff --git a/app/models/lib_ptg_folder.rb b/app/models/lib_ptg_folder.rb index d427e89..02af0a4 100644 --- a/app/models/lib_ptg_folder.rb +++ b/app/models/lib_ptg_folder.rb @@ -5,6 +5,8 @@ class LibPtgFolder < ApplicationRecord scope :name_like, ->(like) { where("name like ?", "%#{like}%") } + validates :name, presence: true, allow_blank: false, uniqueness: true + def update? true end diff --git a/spec/models/lib_ptg_folder_spec.rb b/spec/models/lib_ptg_folder_spec.rb index 7e7aa45..8101c8e 100644 --- a/spec/models/lib_ptg_folder_spec.rb +++ b/spec/models/lib_ptg_folder_spec.rb @@ -3,5 +3,15 @@ require 'rails_helper' RSpec.describe LibPtgFolder, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + subject(:lib_ptg_folder) { create(:lib_ptg_folder) } + + it do # rubocop:disable RSpec/ExampleLength, RSpec/MultipleExpectations + expect(lib_ptg_folder).to be_valid + expect(lib_ptg_folder.update?).to be true + expect(lib_ptg_folder.destroy?).to be true + expect(LibPtgFolder.count).to eq(1) + + lib_ptg_folder.destroy + expect(LibPtgFolder.count).to be_zero + end end diff --git a/spec/requests/lib_ptg_folders_spec.rb b/spec/requests/lib_ptg_folders_spec.rb index f5d9211..b36f17b 100644 --- a/spec/requests/lib_ptg_folders_spec.rb +++ b/spec/requests/lib_ptg_folders_spec.rb @@ -3,10 +3,87 @@ require 'rails_helper' RSpec.describe "LibPtgFolders", type: :request do - describe "GET /lib_ptg_folders" do - it "works! (now write some real specs)" do - get lib_ptg_folders_path - expect(response).to have_http_status(200) + let(:target) { create(:lib_ptg_folder) } + + describe '#index' do + subject(:get_index) { get "/lib_ptg_folders" } + + before { get_index } + + it { expect(response).to have_http_status(:ok) } + + context 'when filtering' do + subject(:get_index) { get "/lib_ptg_folders?name_like=#{target.name}" } + + it { expect(response).to have_http_status(:ok) } end end + + describe '#show' do + subject(:get_show) { get "/lib_ptg_folders/#{target.id}" } + + before { get_show } + + it { expect(response).to have_http_status(:ok) } + end + + describe '#new' do + subject(:get_new) { get "/lib_ptg_folders/new" } + + before { get_new } + + it { expect(response).to have_http_status(:ok) } + end + + describe '#edit' do + subject(:get_edit) { get "/lib_ptg_folders/#{target.id}/edit" } + + before { get_edit } + + it { expect(response).to have_http_status(:ok) } + end + + describe '#create' do + subject(:post_create) { post "/lib_ptg_folders", params: { lib_ptg_folder: lib_ptg_folder_params } } + + let(:lib_ptg_folder_params) { { name: 'name' } } + + before { post_create } + + it { expect(response).to redirect_to(lib_ptg_folder_path(LibPtgFolder.find_by(lib_ptg_folder_params))) } + it { expect(response).to have_http_status(:found) } + + context 'when invalid lib_ptg_folder params' do + let(:lib_ptg_folder_params) { { name: '' } } + + it { expect(response).to have_http_status(:ok) } + end + end + + describe '#update' do + subject(:put_update) { put "/lib_ptg_folders/#{target.id}", params: { lib_ptg_folder: lib_ptg_folder_params } } + + let(:lib_ptg_folder_params) { { name: 'new_name' } } + + before { put_update } + + it { expect(response).to redirect_to(lib_ptg_folder_path(LibPtgFolder.find(target.id))) } + it { expect(response).to have_http_status(:found) } + + context 'when invalid lib_ptg_folder params' do + let(:lib_ptg_folder_params) { { name: '' } } + + it { expect(response).to have_http_status(:ok) } + end + end + + describe '#destroy' do + subject(:delete_destroy) { delete "/lib_ptg_folders/#{target.id}" } + + before { delete_destroy } + + it { expect(response).to redirect_to(lib_ptg_folders_path) } + it { expect(response).to have_http_status(:found) } + it { expect { LibPtgFolder.find(target.id) }.to raise_error(ActiveRecord::RecordNotFound) } + end end