156 lines
4.3 KiB
Ruby
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
|