|
134 | 134 | describe "GET /jobs/show" do |
135 | 135 | before do |
136 | 136 | @job = create(:job, user: user, aasm_state: 'approved') |
| 137 | + @unpublished_job = create(:job, user: user, aasm_state: 'draft') |
137 | 138 | end |
138 | 139 |
|
139 | 140 | it "should allow anonymous viewing of a job" do |
|
171 | 172 | expect(page).to have_content('Statistics') |
172 | 173 | expect(page).to have_content(member.name) |
173 | 174 | end |
| 175 | + |
| 176 | + it "should not allow anonymous visitors from accessing the job page if job is not published" do |
| 177 | + visit(job_path(@unpublished_job)) |
| 178 | + |
| 179 | + expect(page).to have_content('The page you were looking for doesn\'t exist.') |
| 180 | + expect(page).to have_content('You may have mistyped the address or the page may have moved.') |
| 181 | + end |
174 | 182 | end |
175 | 183 |
|
176 | 184 | describe "DELETE /jobs/1" do |
|
211 | 219 | end |
212 | 220 | end |
213 | 221 |
|
| 222 | + describe "PUT /jobs/:id" do |
| 223 | + before do |
| 224 | + @pending_job = create(:job, user: user, aasm_state: 'under_review') |
| 225 | + @profile = create(:profile, user: admin) |
| 226 | + create(:profile, user: user) |
| 227 | + create(:profile, user: member) |
| 228 | + |
| 229 | + allow(SlackNotifierWorker).to receive(:perform_async).and_return(true) |
| 230 | + allow(BufferNotifierWorker).to receive(:perform_async).and_return(true) |
| 231 | + end |
| 232 | + |
| 233 | + it "should allow admin to update job without changing job state" do |
| 234 | + sign_in admin |
| 235 | + visit(list_jobs_admin_path) |
| 236 | + |
| 237 | + expect(page).to have_content(@pending_job.title) |
| 238 | + |
| 239 | + click_on('Edit', match: :first) |
| 240 | + |
| 241 | + expect(page).to have_content('Job title') |
| 242 | + fill_in 'job_title', with: @pending_job.title + ' 1' |
| 243 | + |
| 244 | + # not approved yet |
| 245 | + expect(page).to_not have_content('Share this job:') |
| 246 | + |
| 247 | + click_on('Save and continue', match: :first) |
| 248 | + |
| 249 | + expect(@pending_job.reload.aasm_state).to eq("under_review") |
| 250 | + end |
| 251 | + |
| 252 | + it "should allow job owner to update job and changing job state back to draft" do |
| 253 | + sign_in user |
| 254 | + visit(job_path(@pending_job)) |
| 255 | + |
| 256 | + expect(page).to have_content(@pending_job.title) |
| 257 | + expect(page).to have_content("Job Post Actions") |
| 258 | + |
| 259 | + click_on('Edit', match: :first) |
| 260 | + |
| 261 | + expect(page).to have_content('Job title') |
| 262 | + fill_in 'job_title', with: @pending_job.title + ' 1' |
| 263 | + |
| 264 | + # not approved yet |
| 265 | + expect(page).to_not have_content('Share this job:') |
| 266 | + |
| 267 | + click_on('Save and continue', match: :first) |
| 268 | + |
| 269 | + expect(@pending_job.reload.aasm_state).to eq("draft") |
| 270 | + end |
| 271 | + |
| 272 | + it "should not allow any member to visit or update job" do |
| 273 | + sign_in member |
| 274 | + visit(edit_job_path(@pending_job)) |
| 275 | + |
| 276 | + expect(page).to have_content('The page you were looking for doesn\'t exist.') |
| 277 | + expect(page).to have_content('If you are the application owner check the logs for more information.') |
| 278 | + end |
| 279 | + |
| 280 | + it "should not allow any anonymous visitor to visit an unpublished job post for editing" do |
| 281 | + visit(edit_job_path(@pending_job)) |
| 282 | + |
| 283 | + expect(page).to have_content('You need to sign in or sign up before continuing.') |
| 284 | + expect(page).to_not have_content('Edit') |
| 285 | + expect(page).to_not have_content('Approve') |
| 286 | + end |
| 287 | + end |
| 288 | + |
214 | 289 | describe "PUT /jobs/:id/pre_approve" do |
215 | 290 | before do |
216 | 291 | @draft_job = create(:job, user: user, aasm_state: 'draft') |
217 | | - @profile = create(:profile, user: user) |
| 292 | + create(:profile, user: user) |
218 | 293 |
|
219 | 294 | allow(SlackNotifierWorker).to receive(:perform_async).and_return(true) |
220 | 295 | allow(BufferNotifierWorker).to receive(:perform_async).and_return(true) |
|
238 | 313 | describe "PUT /jobs/:id/approve" do |
239 | 314 | before do |
240 | 315 | @pending_job = create(:job, user: user, aasm_state: 'under_review') |
241 | | - @profile = create(:profile, user: admin) |
| 316 | + create(:profile, user: admin) |
242 | 317 |
|
243 | 318 | allow(SlackNotifierWorker).to receive(:perform_async).and_return(true) |
244 | 319 | allow(BufferNotifierWorker).to receive(:perform_async).and_return(true) |
|
277 | 352 | describe "PUT /jobs/:id/take_down" do |
278 | 353 | before do |
279 | 354 | @approved_job = create(:job, user: user, aasm_state: 'approved') |
280 | | - @profile = create(:profile, user: admin) |
| 355 | + create(:profile, user: admin) |
281 | 356 |
|
282 | 357 | allow(SlackNotifierWorker).to receive(:perform_async).and_return(true) |
283 | 358 | allow(BufferNotifierWorker).to receive(:perform_async).and_return(true) |
|
301 | 376 | describe "PUT /jobs/:id/feedback" do |
302 | 377 | before do |
303 | 378 | @offline_job = create(:job, user: user, aasm_state: 'disabled') |
304 | | - @profile = create(:profile, user: user) |
| 379 | + create(:profile, user: user) |
305 | 380 |
|
306 | 381 | allow(SlackNotifierWorker).to receive(:perform_async).and_return(true) |
307 | 382 | allow(BufferNotifierWorker).to receive(:perform_async).and_return(true) |
|
0 commit comments