Initial commit

This commit is contained in:
Yaser
2026-08-13 19:50:53 +03:30
commit 38084458fe
879 changed files with 95198 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
# encoding: UTF-8
# frozen_string_literal: true
describe Workers::AMQP::DepositCoinAddress do
let(:member) { create(:member, :barong) }
let(:address) { Faker::Blockchain::Bitcoin.address }
let(:secret) { PasswordGenerator.generate(64) }
let(:wallet) { Wallet.deposit.find_by(blockchain_key: 'btc-testnet') }
let(:payment_address) { member.payment_address(wallet.id) }
let(:create_address_result) do
{ address: address,
secret: secret,
details: { label: 'new-label' } }
end
subject { member.payment_address(wallet.id).address }
it 'raise error on databse connection error' do
Member.stubs(:find_by_id).raises(Mysql2::Error::ConnectionError.new(''))
expect {
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
}.to raise_error Mysql2::Error::ConnectionError
end
context 'wallet service' do
before do
WalletService.any_instance
.expects(:create_address!)
.returns(create_address_result)
end
it 'is passed to wallet service' do
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
expect(subject).to eq address
payment_address.reload
expect(payment_address.as_json
.deep_symbolize_keys
.slice(:address, :secret, :details)).to eq(create_address_result)
end
context 'empty address details' do
let(:create_address_result) do
{ address: address,
secret: secret }
end
it 'is passed to wallet service' do
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
expect(subject).to eq address
payment_address.reload
expect(payment_address.as_json
.deep_symbolize_keys
.slice(:address, :secret, :details)).to eq(create_address_result.merge(details: {}))
end
end
context 'should skip address with details' do
let(:create_address_result) do
{ address: nil,
secret: secret,
details: {
address_id: 'address_id'
} }
end
it 'shouldnt create address' do
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
expect(subject).to eq nil
payment_address.reload
expect(payment_address.as_json
.deep_symbolize_keys
.slice(:address, :secret, :details)).to eq(create_address_result.merge(details: {:address_id=>"address_id"}))
end
end
end
end