Files
x-stake/spec/models/balance_spec.rb
2021-08-15 01:02:39 -03:00

64 lines
1.6 KiB
Ruby

# frozen_string_literal: true
# == Schema Information
#
# Table name: balances
#
# id :bigint not null, primary key
# amount :decimal(20, 10) default(0.0), not null
# created_at :datetime not null
# updated_at :datetime not null
# currency_id :bigint not null
# user_id :bigint not null
#
# Indexes
#
# index_balances_on_currency_id (currency_id)
# index_balances_on_user_id (user_id)
#
# Foreign Keys
#
# fk_rails_... (currency_id => currencies.id)
# fk_rails_... (user_id => users.id)
#
require "rails_helper"
RSpec.describe(Balance, type: :model) do
describe "validations" do
it { is_expected.to(validate_presence_of(:amount)) }
end
describe "associations" do
it { is_expected.to(belong_to(:user)) }
it { is_expected.to(belong_to(:currency)) }
end
describe ".withdrwal!" do
context "when value is greater than the balance" do
it "raise ActiveRecord::RecordInvalid" do
balance = build(:balance, amount: 70.342)
expect { balance.withdrawal!(80) }.to(
raise_error(ActiveRecord::RecordInvalid, "A validação falhou: Quantia saldo insuficiente")
)
end
end
context "when value is equals to the balance" do
it "returns true" do
balance = build(:balance, amount: 70.342)
expect(balance.withdrawal!(70.342)).to(eq(true))
end
end
context "when value is smaller than the balance" do
it "returns true" do
balance = build(:balance, amount: 70.342)
expect(balance.withdrawal!(20)).to(eq(true))
end
end
end
end