master
1require "rails_helper"
2
3describe Api::V1::CakesController do
4 render_views
5
6 context "when signed in" do
7 let(:user) { create(:user) }
8
9 before :each do
10 api_login(user)
11 end
12
13 describe "#index" do
14 let!(:my_cake) { create(:creation) }
15 let!(:other_cake) { create(:creation) }
16
17 before :each do
18 user.creations << my_cake
19 get :index, xhr: true
20 end
21
22 it "returns all of my cakes" do
23 expect(assigns(:cakes)).to match_array([my_cake])
24 end
25
26 it "does not return any other cakes" do
27 expect(assigns(:cakes)).to_not include(other_cake)
28 end
29 end
30
31 describe "#show" do
32 let!(:cake) { create(:creation) }
33
34 before :each do
35 user.creations << cake
36 get :show, params: { id: cake.id }, xhr: true
37 end
38
39 it "loads a specific cake" do
40 expect(assigns(:cake)).to eql(cake)
41 end
42 end
43
44 describe "#create" do
45 let(:category) { create(:category) }
46
47 it "creates a new project" do
48 post :create, params: { cake: { name: "new-cake", category_id: category.id } }, xhr: true
49
50 expect(Creation.count).to eql(1)
51 expect(Creation.first.name).to eql("new-cake")
52 expect(Creation.first.category).to eql(category)
53 expect(Creation.first.user).to eql(user)
54 end
55 end
56
57 describe "#update" do
58 let(:cake) { create(:cake, user: user) }
59
60 it "tags the cake" do
61 tags = ["cake", "cookies", "yummy"]
62 patch :update, params: { id: cake.id, cake: { tags: tags.join(", ") } }, xhr: true
63
64 cake.reload
65 expect(cake.tags.pluck(:name)).to match_array(tags)
66 end
67
68 it "updates the description" do
69 new_story = "what is the haps on the craps"
70 patch :update, params: { id: cake.id, cake: { story: new_story } }, xhr: true
71
72 cake.reload
73 expect(cake.story).to eql(new_story)
74 end
75
76 it "updates the category" do
77 category = create(:category)
78 patch :update, params: { id: cake.id, cake: { category_id: category.id } }, xhr: true
79
80 cake.reload
81 expect(cake.category).to eql(category)
82 end
83 end
84
85 describe "#destroy" do
86 let!(:cake) { create(:creation) }
87
88 before :each do
89 user.creations << cake
90 delete :destroy, params: { id: cake.id }, xhr: true
91 end
92
93 it "deletes the specified cake" do
94 expect(Creation.exists?(cake.id)).to be_falsey
95 end
96
97 it "returns an empty json response" do
98 json = JSON.parse(response.body)
99 expect(json["id"]).to eql(cake.id)
100 end
101 end
102 end
103end