Files
Dalan/spec/api/v2/resource/addresses_spec.rb
2026-08-13 19:56:46 +03:30

136 lines
5.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
describe 'Addresses API test' do
include_context 'bearer authentication'
let!(:create_member_permission) do
create :permission,
role: 'member'
end
let!(:image) { fixture_file_upload('/files/documents_test.jpg', 'image/jpg') }
before do
allow(Barong::App.config).to receive_messages(required_docs_expire: false)
end
describe 'POST /api/v2/resource/addresses/' do
let(:params) do
{
country: 'UA',
address: 'Yaroslaviv Val 15',
city: 'Kiev',
postcode: '101010',
upload: [
image
]
}
end
let(:last_document) { Document.last }
it 'saves 10 address documents successfully' do
10.times do
post '/api/v2/resource/addresses', headers: auth_header,
params: {
country: 'UA',
address: 'Yaroslaviv Val 15',
city: 'Kiev',
postcode: '101010',
upload: [fixture_file_upload('/files/documents_test.jpg', 'image/jpg')]
}
end
expect(response.status).to eq(201)
end
it 'uploads 2 files at once' do
post '/api/v2/resource/addresses', headers: auth_header,
params: {
country: 'UA',
address: 'Yaroslaviv Val 15',
city: 'Kiev',
postcode: '101010',
upload: [
fixture_file_upload('/files/documents_test.jpg', 'image/jpg'),
fixture_file_upload('/files/documents_test.jpg', 'image/jpg')
]
}
expect(response.status).to eq(201)
expect(test_user.documents.length).to eq(2)
end
it 'uploads 3 files at once' do
post '/api/v2/resource/addresses', headers: auth_header,
params: {
country: 'UA',
address: 'Yaroslaviv Val 15',
city: 'Kiev',
postcode: '101010',
upload: [
fixture_file_upload('/files/documents_test.jpg', 'image/jpg'),
fixture_file_upload('/files/documents_test.jpg', 'image/jpg'),
fixture_file_upload('/files/documents_test.jpg', 'image/jpg')
]
}
expect(response.status).to eq(201)
expect(test_user.documents.length).to eq(3)
end
it 'Checks if params are ok and returns success' do
post '/api/v2/resource/addresses', headers: auth_header, params: params
expect(response.status).to eq(201)
end
it 'Creates a pending address label' do
expect(test_user.labels.find_by(key: :address)).to eq(nil)
post '/api/v2/resource/addresses', headers: auth_header, params: params
expect(response.status).to eq(201)
expect(test_user.labels.find_by(key: :address)).not_to eq(nil)
expect(test_user.labels.find_by(key: :address).value).to eq('pending')
end
it 'Update rejected or verified label to pending documents label on new doc' do
expect(test_user.labels.find_by(key: :address)).to eq(nil)
test_user.labels.create(key: :address, value: 'verified')
test_user.reload
post '/api/v2/resource/addresses', headers: auth_header, params: params
expect(response.status).to eq(201)
expect(test_user.labels.find_by(key: :address)).not_to eq(nil)
expect(test_user.labels.find_by(key: :address).value).to eq('pending')
end
it 'triggers KYCService' do
expect(KycService).to receive(:address_step)
post '/api/v2/resource/addresses', headers: auth_header, params: params
expect(response.status).to eq(201)
end
end
context 'event API behavior' do
let!(:url) { '/api/v2/resource/addresses' }
let(:request_params) do
{
country: 'UA',
address: 'Yaroslaviv Val 15',
city: 'Kiev',
postcode: '101010',
upload: [
image
]
}
end
before do
allow(EventAPI).to receive(:notify)
end
it 'receive model.document.created notify' do
expect(EventAPI).to receive(:notify).ordered.with('model.user.created', hash_including(:record))
expect(EventAPI).to receive(:notify).ordered.with('model.document.created', hash_including(:record))
post url, headers: auth_header, params: request_params
end
end
end