summaryrefslogtreecommitdiff
path: root/spec/requests/cards_controller/create_spec.rb
blob: 465288b335a19c6ec044d5428801b9efeb13bdfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'POST /account/cards', type: :request do
  let(:card) { build(:card, user_account: nil) }
  let(:user) { create(:user_account, role: 'regular') }
  let(:headers) { { 'Authorization' => "Bearer #{token['token']}" } }
  let(:token) { jwt(user) }
  let(:params) do
    { number: card.number, expiration_year: card.expiration_year, expiration_month: card.expiration_month,
      expiration_day: card.expiration_day, security_code: card.security_code }
  end

  it_behaves_like 'a POST request' do
    let(:route) { '/api/account/cards' }
    let(:expected_error_messages) do
      ['Number is the wrong length (should be 16 characters)',
       'Expiration year must be greater than 1970',
       'Expiration month is not included in the list',
       'Expiration day is not included in the list',
       "Security code can't be blank"]
    end
    let(:desired_error_status) { 422 }
    let(:expected_text) do
      [card.number, card.expiration_year, card.expiration_month, card.expiration_day, card.security_code]
    end
    let(:wrong_params) do
      { number: SecureRandom.hex(24), expiration_year: -20, expiration_month: 13,
        expiration_day: 33, security_code: '' }
    end
  end
end