44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Peatio::Airdrop do
|
|
let(:test_file) { File.read(Rails.root.join('spec', 'resources', 'airdrops', file_name)) }
|
|
let(:file_name) { '1.csv' }
|
|
let(:src_user) { create(:member, role: :admin) }
|
|
let(:uids) { %w[UID120 UID121 UID122 UID123 UID124] }
|
|
|
|
before do
|
|
deposit = create(:deposit_btc, member: src_user, amount: 1000)
|
|
deposit.accept!
|
|
deposit.process!
|
|
deposit.dispatch!
|
|
uids.each do |uid|
|
|
create(:member, uid: uid)
|
|
end
|
|
end
|
|
|
|
subject(:airdop) { Peatio::Airdrop.new.process(src_user, { file: { tempfile: test_file } }) }
|
|
|
|
it 'credited all users' do
|
|
expect { airdop }.to change { Transfer.count }.by(5)
|
|
uids.each do |uid|
|
|
member = Member.find_by_uid(uid)
|
|
expect(member.get_account(:btc).balance).to eq 100
|
|
end
|
|
end
|
|
|
|
it 'doesnt create for unexisting user' do
|
|
Member.last.delete
|
|
expect { airdop }.to change { Transfer.count }.by(4)
|
|
end
|
|
|
|
it 'doesnt create transfers if src_user has insufficient funds (enough for the part of airdrop)' do
|
|
src_user.get_account(:btc).update(balance: 200)
|
|
expect { airdop }.to change { Transfer.count }.by(0)
|
|
end
|
|
|
|
it 'doesnt create transfers if src_user has insufficient funds (zero balance)' do
|
|
src_user.get_account(:btc).update(balance: 0)
|
|
expect { airdop }.to change { Transfer.count }.by(0)
|
|
end
|
|
end
|