|
13 | 13 | # sticking to rails and rspec-rails APIs to keep things simple and stable.
|
14 | 14 |
|
15 | 15 | RSpec.describe "/admin/newsletters", type: :request do
|
16 |
| - # This should return the minimal set of attributes required to create a valid |
17 |
| - # Newsletter. As you add validations to Newsletter, be sure to |
18 |
| - # adjust the attributes here as well. |
19 |
| - let(:valid_attributes) { |
20 |
| - skip("Add a hash of attributes valid for your model") |
21 |
| - } |
22 |
| - |
23 |
| - let(:invalid_attributes) { |
24 |
| - skip("Add a hash of attributes invalid for your model") |
25 |
| - } |
26 |
| - |
27 |
| - describe "GET /index" do |
| 16 | + let(:valid_attributes) { FactoryBot.attributes_for(:newsletter) } |
| 17 | + let(:invalid_attributes) { {title: "", content: ""} } |
| 18 | + |
| 19 | + describe "GET /" do |
28 | 20 | it "renders a successful response" do
|
29 |
| - Newsletter.create! valid_attributes |
30 |
| - get admin_newsletters_url |
| 21 | + FactoryBot.create(:newsletter) |
| 22 | + |
| 23 | + get admin_newsletters_path |
| 24 | + |
31 | 25 | expect(response).to be_successful
|
32 | 26 | end
|
33 | 27 | end
|
34 | 28 |
|
35 | 29 | describe "GET /show" do
|
36 | 30 | it "renders a successful response" do
|
37 |
| - newsletter = Newsletter.create! valid_attributes |
38 |
| - get admin_newsletter_url(newsletter) |
| 31 | + newsletter = FactoryBot.create(:newsletter) |
| 32 | + |
| 33 | + get admin_newsletter_path(newsletter) |
| 34 | + |
39 | 35 | expect(response).to be_successful
|
40 | 36 | end
|
41 | 37 | end
|
42 | 38 |
|
43 | 39 | describe "GET /new" do
|
44 | 40 | it "renders a successful response" do
|
45 |
| - get new_admin_newsletter_url |
| 41 | + get new_admin_newsletter_path |
| 42 | + |
46 | 43 | expect(response).to be_successful
|
47 | 44 | end
|
48 | 45 | end
|
49 | 46 |
|
50 | 47 | describe "GET /edit" do
|
51 | 48 | it "renders a successful response" do
|
52 |
| - newsletter = Newsletter.create! valid_attributes |
53 |
| - get edit_admin_newsletter_url(newsletter) |
| 49 | + newsletter = FactoryBot.create(:newsletter) |
| 50 | + |
| 51 | + get edit_admin_newsletter_path(newsletter) |
| 52 | + |
54 | 53 | expect(response).to be_successful
|
55 | 54 | end
|
56 | 55 | end
|
|
59 | 58 | context "with valid parameters" do
|
60 | 59 | it "creates a new Newsletter" do
|
61 | 60 | expect {
|
62 |
| - post admin_newsletters_url, params: {admin_newsletter: valid_attributes} |
| 61 | + post admin_newsletters_path, params: {newsletter: valid_attributes} |
63 | 62 | }.to change(Newsletter, :count).by(1)
|
64 | 63 | end
|
65 | 64 |
|
66 | 65 | it "redirects to the created admin_newsletter" do
|
67 |
| - post admin_newsletters_url, params: {admin_newsletter: valid_attributes} |
68 |
| - expect(response).to redirect_to(admin_newsletter_url(Newsletter.last)) |
| 66 | + post admin_newsletters_path, params: {newsletter: valid_attributes} |
| 67 | + expect(response).to redirect_to(admin_newsletter_path(Newsletter.last)) |
69 | 68 | end
|
70 | 69 | end
|
71 | 70 |
|
72 | 71 | context "with invalid parameters" do
|
73 | 72 | it "does not create a new Newsletter" do
|
74 | 73 | expect {
|
75 |
| - post admin_newsletters_url, params: {admin_newsletter: invalid_attributes} |
| 74 | + post admin_newsletters_path, params: {newsletter: invalid_attributes} |
76 | 75 | }.to change(Newsletter, :count).by(0)
|
77 | 76 | end
|
78 | 77 |
|
79 | 78 | it "renders a response with 422 status (i.e. to display the 'new' template)" do
|
80 |
| - post admin_newsletters_url, params: {admin_newsletter: invalid_attributes} |
| 79 | + post admin_newsletters_path, params: {newsletter: invalid_attributes} |
81 | 80 | expect(response).to have_http_status(:unprocessable_entity)
|
82 | 81 | end
|
83 | 82 | end
|
84 | 83 | end
|
85 | 84 |
|
86 | 85 | describe "PATCH /update" do
|
87 | 86 | context "with valid parameters" do
|
88 |
| - let(:new_attributes) { |
89 |
| - skip("Add a hash of attributes valid for your model") |
90 |
| - } |
| 87 | + let(:new_attributes) { {title: "A New Title"} } |
91 | 88 |
|
92 | 89 | it "updates the requested admin_newsletter" do
|
93 |
| - newsletter = Newsletter.create! valid_attributes |
94 |
| - patch admin_newsletter_url(newsletter), params: {admin_newsletter: new_attributes} |
| 90 | + newsletter = FactoryBot.create(:newsletter) |
| 91 | + patch admin_newsletter_path(newsletter), params: {newsletter: new_attributes} |
95 | 92 | newsletter.reload
|
96 |
| - skip("Add assertions for updated state") |
| 93 | + expect(newsletter.title).to eq("A New Title") |
97 | 94 | end
|
98 | 95 |
|
99 | 96 | it "redirects to the admin_newsletter" do
|
100 |
| - newsletter = Newsletter.create! valid_attributes |
101 |
| - patch admin_newsletter_url(newsletter), params: {admin_newsletter: new_attributes} |
| 97 | + newsletter = FactoryBot.create(:newsletter) |
| 98 | + patch admin_newsletter_path(newsletter), params: {newsletter: new_attributes} |
102 | 99 | newsletter.reload
|
103 |
| - expect(response).to redirect_to(admin_newsletter_url(newsletter)) |
| 100 | + expect(response).to redirect_to(admin_newsletter_path(newsletter)) |
104 | 101 | end
|
105 | 102 | end
|
106 | 103 |
|
107 | 104 | context "with invalid parameters" do
|
108 | 105 | it "renders a response with 422 status (i.e. to display the 'edit' template)" do
|
109 |
| - newsletter = Newsletter.create! valid_attributes |
110 |
| - patch admin_newsletter_url(newsletter), params: {admin_newsletter: invalid_attributes} |
| 106 | + newsletter = FactoryBot.create(:newsletter) |
| 107 | + patch admin_newsletter_path(newsletter), params: {newsletter: invalid_attributes} |
111 | 108 | expect(response).to have_http_status(:unprocessable_entity)
|
112 | 109 | end
|
113 | 110 | end
|
114 | 111 | end
|
115 | 112 |
|
116 | 113 | describe "DELETE /destroy" do
|
117 | 114 | it "destroys the requested admin_newsletter" do
|
118 |
| - newsletter = Newsletter.create! valid_attributes |
| 115 | + newsletter = FactoryBot.create(:newsletter) |
119 | 116 | expect {
|
120 |
| - delete admin_newsletter_url(newsletter) |
| 117 | + delete admin_newsletter_path(newsletter) |
121 | 118 | }.to change(Newsletter, :count).by(-1)
|
122 | 119 | end
|
123 | 120 |
|
124 | 121 | it "redirects to the admin_newsletters list" do
|
125 |
| - newsletter = Newsletter.create! valid_attributes |
126 |
| - delete admin_newsletter_url(newsletter) |
127 |
| - expect(response).to redirect_to(admin_newsletters_url) |
| 122 | + newsletter = FactoryBot.create(:newsletter) |
| 123 | + delete admin_newsletter_path(newsletter) |
| 124 | + expect(response).to redirect_to(admin_newsletters_path) |
128 | 125 | end
|
129 | 126 | end
|
130 | 127 | end
|
0 commit comments