Skip to content

Commit

Permalink
URL構成変更後のテストに変更
Browse files Browse the repository at this point in the history
  • Loading branch information
defaultcf committed Oct 17, 2017
1 parent 44a11af commit 43067c8
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 183 deletions.
1 change: 1 addition & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
class UsersController < ApplicationController
before_action :authenticate_user!
before_action :set_user

def show
Expand Down
145 changes: 1 addition & 144 deletions spec/controllers/meals_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -1,148 +1,5 @@
require "rails_helper"

# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# It assumes that the implementation code is generated by the rails scaffold
# generator. If you are using any extension libraries to generate different
# controller code, this generated spec may or may not pass.
#
# It only uses APIs available in rails and/or rspec-rails. There are a number
# of tools you can use to make these specs even more expressive, but we're
# sticking to rails and rspec-rails APIs to keep things simple and stable.
#
# Compared to earlier versions of this generator, there is very limited use of
# stubs and message expectations in this spec. Stubs are only used when there
# is no simpler way to get a handle on the object needed for the example.
# Message expectations are only used when there is no simpler way to specify
# that an instance is receiving a specific message.
#
# Also compared to earlier versions of this generator, there are no longer any
# expectations of assigns and templates rendered. These features have been
# removed from Rails core in Rails 5, but can be added back in via the
# `rails-controller-testing` gem.

RSpec.describe MealsController, type: :controller do
let(:user) { FactoryGirl.build(:user) }

# This should return the minimal set of attributes required to create a valid
# Meal. As you add validations to Meal, be sure to
# adjust the attributes here as well.
let(:valid_attributes) {
skip("Add a hash of attributes valid for your model")
}

let(:invalid_attributes) {
skip("Add a hash of attributes invalid for your model")
}

# This should return the minimal set of values that should be in the session
# in order to pass any filters (e.g. authentication) defined in
# MealsController. Be sure to keep this updated too.
let(:valid_session) { {} }

before do
login_user user
end

after do
sign_out user
end

describe "GET #index" do
it "returns a success response" do
get :index, params: {}, session: valid_session
expect(response).to be_success
end
end

describe "GET #show" do
it "returns a success response" do
meal = Meal.create! valid_attributes
get :show, params: { id: meal.to_param }, session: valid_session
expect(response).to be_success
end
end

describe "GET #new" do
it "returns a success response" do
get :new, params: {}, session: valid_session
expect(response).to be_success
end
end

describe "GET #edit" do
it "returns a success response" do
meal = Meal.create! valid_attributes
get :edit, params: { id: meal.to_param }, session: valid_session
expect(response).to be_success
end
end

describe "POST #create" do
context "with valid params" do
it "creates a new Meal" do
expect {
post :create, params: { meal: valid_attributes }, session: valid_session
}.to change(Meal, :count).by(1)
end

it "redirects to the created meal" do
post :create, params: { meal: valid_attributes }, session: valid_session
expect(response).to redirect_to(Meal.last)
end
end

context "with invalid params" do
it "returns a success response (i.e. to display the 'new' template)" do
post :create, params: { meal: invalid_attributes }, session: valid_session
expect(response).to be_success
end
end
end

describe "PUT #update" do
context "with valid params" do
let(:new_attributes) {
skip("Add a hash of attributes valid for your model")
}

it "updates the requested meal" do
meal = Meal.create! valid_attributes
put :update, params: { id: meal.to_param, meal: new_attributes }, session: valid_session
meal.reload
skip("Add assertions for updated state")
end

it "redirects to the meal" do
meal = Meal.create! valid_attributes
put :update, params: { id: meal.to_param, meal: valid_attributes }, session: valid_session
expect(response).to redirect_to(meal)
end
end

context "with invalid params" do
it "returns a success response (i.e. to display the 'edit' template)" do
meal = Meal.create! valid_attributes
put :update, params: { id: meal.to_param, meal: invalid_attributes }, session: valid_session
expect(response).to be_success
end
end
end

describe "DELETE #destroy" do
it "destroys the requested meal" do
meal = Meal.create! valid_attributes
expect {
delete :destroy, params: { id: meal.to_param }, session: valid_session
}.to change(Meal, :count).by(-1)
end

it "redirects to the meals list" do
meal = Meal.create! valid_attributes
delete :destroy, params: { id: meal.to_param }, session: valid_session
expect(response).to redirect_to(meals_url)
end
end
pending "add some examples to (or delete) #{__FILE__}"
end
30 changes: 0 additions & 30 deletions spec/controllers/user_profile_controller_spec.rb

This file was deleted.

19 changes: 19 additions & 0 deletions spec/controllers/users_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require "rails_helper"

RSpec.describe UsersController, type: :controller do
let(:user) { FactoryGirl.create(:user) }

describe "GET #show" do
subject { get :show, params: params }

context "存在するnameでアクセスした時" do
let(:params) { { name: user.username } }
it_behaves_like "ログイン画面に遷移する"
end

context "存在しないnameでアクセスした時" do
let(:params) { { name: "@sachiko" } }
it_behaves_like "ログイン画面に遷移する"
end
end
end
2 changes: 1 addition & 1 deletion spec/factories/user_profiles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

FactoryGirl.define do
factory :user_profile do
sequence(:username) { |n| "koume-#{n}" }
sequence(:username) { |n| "koume#{n}" }
nickname "zombie lover"
avatar "zombieee"
bio "I love zombie💓"
Expand Down
16 changes: 8 additions & 8 deletions spec/routing/meals_routing_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,35 @@
RSpec.describe MealsController, type: :routing do
describe "routing" do
it "routes to #index" do
expect(get: "/meals").to route_to("meals#index")
expect(get: "/@koume1/meals").to route_to("meals#index", user_name: "@koume1")
end

it "routes to #new" do
expect(get: "/meals/new").to route_to("meals#new")
expect(get: "/@koume1/meals/new").to route_to("meals#new", user_name: "@koume1")
end

it "routes to #show" do
expect(get: "/meals/1").to route_to("meals#show", id: "1")
expect(get: "/@koume1/meals/2017/03/28").to route_to("meals#show", user_name: "@koume1", date: "2017/03/28")
end

it "routes to #edit" do
expect(get: "/meals/1/edit").to route_to("meals#edit", id: "1")
expect(get: "/@koume1/meals/2017/03/28/edit").to route_to("meals#edit", user_name: "@koume1", date: "2017/03/28")
end

it "routes to #create" do
expect(post: "/meals").to route_to("meals#create")
expect(post: "/@koume1/meals").to route_to("meals#create", user_name: "@koume1")
end

it "routes to #update via PUT" do
expect(put: "/meals/1").to route_to("meals#update", id: "1")
expect(put: "/@koume1/meals/2017/03/28").to route_to("meals#update", user_name: "@koume1", date: "2017/03/28")
end

it "routes to #update via PATCH" do
expect(patch: "/meals/1").to route_to("meals#update", id: "1")
expect(patch: "/@koume1/meals/2017/03/28").to route_to("meals#update", user_name: "@koume1", date: "2017/03/28")
end

it "routes to #destroy" do
expect(delete: "/meals/1").to route_to("meals#destroy", id: "1")
expect(delete: "/@koume1/meals/2017/03/28").to route_to("meals#destroy", user_name: "@koume1", date: "2017/03/28")
end
end
end

0 comments on commit 43067c8

Please sign in to comment.