Files
Dena/spec/workers/deposit_spec.rb
2026-08-13 19:50:53 +03:30

156 lines
4.3 KiB
Ruby

# frozen_string_literal: true
describe Workers::Daemons::Deposit do
let(:btc_deposit) { create(:deposit, :deposit_btc) }
let(:eth_deposit) { create(:deposit, :deposit_eth) }
let(:trst_deposit) { create(:deposit, :deposit_trst) }
let(:collected_spread) do
spread.each_with_index.map do |s, i|
s.merge(hash: "hash-#{i}")
end
end
subject { Workers::Daemons::Deposit.new }
context 'collect btc deposit' do
before do
btc_deposit.accept!
btc_deposit.process!
btc_deposit.update!(updated_at: Time.now - 20.minutes)
transactions = collected_spread.map { |s| Peatio::Transaction.new(s) }
WalletService.any_instance
.expects(:collect_deposit!)
.with(instance_of(Deposits::Coin), anything)
.returns(transactions)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one btc deposit' do
subject.process
expect(btc_deposit.reload.collected?).to be_truthy
end
end
context 'collect eth deposit' do
before do
eth_deposit.accept!
eth_deposit.process!
eth_deposit.update!(updated_at: Time.now - 20.minutes)
end
before do
transactions = collected_spread.map { |s| Peatio::Transaction.new(s) }
WalletService.any_instance
.expects(:collect_deposit!)
.with(instance_of(Deposits::Coin), anything)
.returns(transactions)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one eth deposit' do
subject.process
expect(eth_deposit.reload.collected?).to be_truthy
end
end
context 'collect fee for trst deposit' do
before do
trst_deposit.accept!
trst_deposit.process!
trst_deposit.update!(updated_at: Time.now - 20.minutes)
end
before do
transactions = collected_spread.map { |s| Peatio::Transaction.new(s) }
WalletService.any_instance
.expects(:deposit_collection_fees!)
.with(instance_of(Deposits::Coin), anything)
.returns(transactions)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one trst deposit' do
subject.process
expect(trst_deposit.reload.fee_processing?).to be_truthy
end
end
context 'collect trst deposit' do
before do
trst_deposit.accept!
trst_deposit.process!
trst_deposit.fee_process!
trst_deposit.update!(updated_at: Time.now - 20.minutes)
end
before do
transactions = collected_spread.map { |s| Peatio::Transaction.new(s) }
WalletService.any_instance
.expects(:collect_deposit!)
.with(instance_of(Deposits::Coin), anything)
.returns(transactions)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one trst deposit' do
subject.process
expect(trst_deposit.reload.collected?).to be_truthy
end
end
context 'error raised on collection step' do
before do
btc_deposit.accept!
btc_deposit.process!
btc_deposit.update!(updated_at: Time.now - 20.minutes)
WalletService.any_instance
.expects(:collect_deposit!)
.with(instance_of(Deposits::Coin), anything)
.raises(StandardError.new)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one btc deposit' do
subject.process
expect(btc_deposit.reload.processing?).to be_truthy
end
end
context 'error raised on collection fee step' do
before do
eth_deposit.accept!
eth_deposit.process!
eth_deposit.update!(updated_at: Time.now - 20.minutes)
WalletService.any_instance
.expects(:deposit_collection_fees!)
.with(instance_of(Deposits::Coin), anything)
.raises(StandardError.new)
end
let(:spread) do
[{ to_address: 'to-address', amount: 0.1, status: 'pending' }]
end
it 'process one eth deposit' do
subject.process
expect(eth_deposit.reload.processing?).to be_truthy
end
end
end