# frozen_string_literal: true require 'rails_helper' RSpec.describe 'PUT /api/account/addresses', type: :request do let(:user) { create(:user_account, role: 'regular') } let(:card) { create(:card, user_account: user) } let(:new_card) { build(:card) } let(:token) { jwt(user) } let(:headers) { { 'Authorization' => "Bearer #{token['token']}" } } let(:params) do { number: new_card.number, expiration_year: new_card.expiration_year, expiration_month: new_card.expiration_month, expiration_day: new_card.expiration_day, security_code: new_card.security_code } end it_behaves_like 'a PUT request' do let(:route) { "/api/account/cards/#{card.id}" } let(:wrong_route) { "/api/account/cards/#{SecureRandom.hex(8)}" } 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(:expected_text) do [new_card.number, new_card.expiration_year, new_card.expiration_month, new_card.expiration_day, new_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