53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# == Schema Information
|
|
#
|
|
# Table name: sell_crypto_orders
|
|
#
|
|
# id :bigint not null, primary key
|
|
# paid_amount :decimal(20, 10) default(0.0), not null
|
|
# received_amount_cents :integer default(0), not null
|
|
# status :string not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# user_id :bigint not null
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_sell_crypto_orders_on_user_id (user_id)
|
|
#
|
|
# Foreign Keys
|
|
#
|
|
# fk_rails_... (user_id => users.id)
|
|
#
|
|
require "rails_helper"
|
|
|
|
RSpec.describe(SellCryptoOrder, type: :model) do
|
|
describe "validations" do
|
|
context "when status is `processing`" do
|
|
subject { build(:sell_crypto_order, status: :processing) }
|
|
|
|
it { is_expected.to(validate_presence_of(:paid_amount)) }
|
|
it { is_expected.not_to(validate_presence_of(:received_amount_cents)) }
|
|
end
|
|
|
|
context "when status is `completed`" do
|
|
subject { build(:sell_crypto_order, status: :completed) }
|
|
|
|
it { is_expected.to(validate_presence_of(:paid_amount)) }
|
|
it { is_expected.to(validate_presence_of(:received_amount_cents)) }
|
|
end
|
|
|
|
context "when status is `canceled`" do
|
|
subject { build(:sell_crypto_order, status: :canceled) }
|
|
|
|
it { is_expected.to(validate_presence_of(:paid_amount)) }
|
|
it { is_expected.not_to(validate_presence_of(:received_amount_cents)) }
|
|
end
|
|
end
|
|
|
|
describe "associations" do
|
|
it { is_expected.to(belong_to(:user)) }
|
|
end
|
|
end
|