add BuyCryptoOrder and SellCryptoOrder entities
This commit is contained in:
34
spec/factories/buy_crypto_orders.rb
Normal file
34
spec/factories/buy_crypto_orders.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: buy_crypto_orders
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# paid_amount_cents :integer default(0), not null
|
||||
# received_amount :decimal(20, 10)
|
||||
# status :string not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# currency_id :bigint not null
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_buy_crypto_orders_on_currency_id (currency_id)
|
||||
# index_buy_crypto_orders_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# fk_rails_... (currency_id => currencies.id)
|
||||
# fk_rails_... (user_id => users.id)
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :buy_crypto_order do
|
||||
association :user
|
||||
association :currency
|
||||
status { :processing }
|
||||
paid_amount_cents { rand(10000) }
|
||||
received_amount { rand * 10000 }
|
||||
end
|
||||
end
|
||||
34
spec/factories/sell_crypto_orders.rb
Normal file
34
spec/factories/sell_crypto_orders.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
# 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
|
||||
# status :string not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# currency_id :bigint not null
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_sell_crypto_orders_on_currency_id (currency_id)
|
||||
# index_sell_crypto_orders_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# fk_rails_... (currency_id => currencies.id)
|
||||
# fk_rails_... (user_id => users.id)
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :sell_crypto_order do
|
||||
association :user
|
||||
association :currency
|
||||
status { :processing }
|
||||
received_amount_cents { rand(10000) }
|
||||
paid_amount { rand * 10000 }
|
||||
end
|
||||
end
|
||||
56
spec/models/buy_crypto_order_spec.rb
Normal file
56
spec/models/buy_crypto_order_spec.rb
Normal file
@@ -0,0 +1,56 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: buy_crypto_orders
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# paid_amount_cents :integer default(0), not null
|
||||
# received_amount :decimal(20, 10)
|
||||
# status :string not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# currency_id :bigint not null
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_buy_crypto_orders_on_currency_id (currency_id)
|
||||
# index_buy_crypto_orders_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# fk_rails_... (currency_id => currencies.id)
|
||||
# fk_rails_... (user_id => users.id)
|
||||
#
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe(BuyCryptoOrder, type: :model) do
|
||||
describe "validations" do
|
||||
context "when status is `processing`" do
|
||||
subject { build(:buy_crypto_order, status: :processing) }
|
||||
|
||||
it { is_expected.to(validate_presence_of(:paid_amount_cents)) }
|
||||
it { is_expected.not_to(validate_presence_of(:received_amount)) }
|
||||
end
|
||||
|
||||
context "when status is `completed`" do
|
||||
subject { build(:buy_crypto_order, status: :completed) }
|
||||
|
||||
it { is_expected.to(validate_presence_of(:paid_amount_cents)) }
|
||||
it { is_expected.to(validate_presence_of(:received_amount)) }
|
||||
end
|
||||
|
||||
context "when status is `canceled`" do
|
||||
subject { build(:buy_crypto_order, status: :canceled) }
|
||||
|
||||
it { is_expected.to(validate_presence_of(:paid_amount_cents)) }
|
||||
it { is_expected.not_to(validate_presence_of(:received_amount)) }
|
||||
end
|
||||
end
|
||||
|
||||
describe "associations" do
|
||||
it { is_expected.to(belong_to(:user)) }
|
||||
it { is_expected.to(belong_to(:currency)) }
|
||||
end
|
||||
end
|
||||
56
spec/models/sell_crypto_order_spec.rb
Normal file
56
spec/models/sell_crypto_order_spec.rb
Normal file
@@ -0,0 +1,56 @@
|
||||
# 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
|
||||
# status :string not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# currency_id :bigint not null
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_sell_crypto_orders_on_currency_id (currency_id)
|
||||
# index_sell_crypto_orders_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# fk_rails_... (currency_id => currencies.id)
|
||||
# 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)) }
|
||||
it { is_expected.to(belong_to(:currency)) }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user