Files
Dena/spec/lib/peatio/airdrop_spec.rb
2026-08-13 19:50:53 +03:30

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