1
0
Fork 0

Add action PassportConfirmationsController#create

This commit is contained in:
Alex Kotov 2018-11-30 13:47:54 +05:00
parent ef000436dc
commit b61f8f667c
No known key found for this signature in database
GPG Key ID: 4E831250F47DE154
6 changed files with 93 additions and 1 deletions

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
class PassportConfirmationsController < ApplicationController
before_action :authenticate_user!
before_action :set_passport, only: :create
# POST /passports/:passport_id/passport_confirmations
def create
@passport_confirmation = PassportConfirmation.new(
passport: @passport,
user: current_user,
)
authorize @passport_confirmation
return redirect_to @passport unless @passport_confirmation.save
redirect_to @passport
end
private
def set_passport
@passport = Passport.find params[:passport_id]
end
end

View File

@ -36,6 +36,10 @@ class ApplicationPolicy
false
end
def policy(record)
Pundit.policy user, record
end
class Scope
attr_reader :user, :scope

View File

@ -28,7 +28,9 @@ Rails.application.routes.draw do
resources :membership_applications, only: %i[new create]
resources :passports, only: %i[index show new create]
resources :passports, only: %i[index show new create] do
resources :passport_confirmations, shallow: true, only: :create
end
resources :telegram_bot_updates, only: :create
end

View File

@ -36,6 +36,7 @@ require_relative 'support/shoulda_matchers'
require_relative 'support/faker'
require_relative 'support/factory_bot'
require_relative 'support/database_cleaner'
require_relative 'support/devise'
# Checks for pending migrations and applies them before tests are run.
# If you are not using ActiveRecord, you can remove these lines.

View File

@ -0,0 +1,53 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'POST /passports/:passport_id/passport_confirmations' do
let!(:passport) { create :passport }
def make_request
post "/passports/#{passport.id}/passport_confirmations"
end
context 'when no user is authenticated' do
specify do
expect { make_request }.not_to change(PassportConfirmation, :count)
end
context 'after request' do
before { make_request }
specify do
expect(response).to redirect_to new_user_session_url
end
end
end
context 'when user is authorized' do
let(:current_user) { create :user }
before do
sign_in current_user
end
specify do
expect { make_request }.to \
change(PassportConfirmation, :count).from(0).to(1)
end
context 'after request' do
before { make_request }
specify do
expect(response).to redirect_to passport
end
specify do
expect(PassportConfirmation.last).to have_attributes(
passport: passport,
user: current_user,
)
end
end
end
end

5
spec/support/devise.rb Normal file
View File

@ -0,0 +1,5 @@
# frozen_string_literal: true
RSpec.configure do |config|
config.include Devise::Test::IntegrationHelpers, type: :request
end