remove crypto balance from backend
This commit is contained in:
@@ -1,26 +0,0 @@
|
||||
# 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
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_balances_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# fk_rails_... (user_id => users.id)
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :balance do
|
||||
association :user
|
||||
amount { (rand * (10000 - 0) + 0) }
|
||||
end
|
||||
end
|
||||
@@ -27,12 +27,9 @@ RSpec.describe(Mutations::CreateSellCryptoOrder, type: :mutation) do
|
||||
GQL
|
||||
end
|
||||
|
||||
context "when the user has enough balance" do
|
||||
it "withdraws from his account and creates a buy order" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 1.0034)
|
||||
)
|
||||
context "when attributes are valid " do
|
||||
it "creates a buy order" do
|
||||
user = create(:user)
|
||||
|
||||
variables = {
|
||||
"amount": "0.80",
|
||||
@@ -58,45 +55,6 @@ RSpec.describe(Mutations::CreateSellCryptoOrder, type: :mutation) do
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
expect(user.balance.reload.amount.to_s).to(eq("0.2034"))
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user does not have enough balance" do
|
||||
it "returns withdrawl error" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 0.0034)
|
||||
)
|
||||
|
||||
variables = {
|
||||
"amount": "0.80",
|
||||
}
|
||||
|
||||
context = { current_user: user }
|
||||
|
||||
result = XStakeSchema.execute(
|
||||
query_string,
|
||||
variables: variables,
|
||||
context: context
|
||||
).to_h.with_indifferent_access
|
||||
|
||||
expect(result).to(eq({
|
||||
"data" => {
|
||||
"createSellCryptoOrder" => {
|
||||
"errors" => [{
|
||||
"fullMessages" => ["Quantia saldo insuficiente"],
|
||||
"fieldName" => "amount",
|
||||
"messages" => ["saldo insuficiente"],
|
||||
"path" => ["attributes", "amount"],
|
||||
}],
|
||||
"order" => nil,
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
expect(user.balance.reload.amount.to_s).to(eq("0.0034"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,12 +31,9 @@ RSpec.describe(Mutations::CreateStakeOrder, type: :mutation) do
|
||||
GQL
|
||||
end
|
||||
|
||||
context "when the user has enough balance" do
|
||||
it "withdraws from his account and creates a buy order" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 1.0034)
|
||||
)
|
||||
context "when attributes are valid" do
|
||||
it "creates a buy order" do
|
||||
user = create(:user)
|
||||
|
||||
variables = {
|
||||
"amount": "0.80",
|
||||
@@ -64,46 +61,6 @@ RSpec.describe(Mutations::CreateStakeOrder, type: :mutation) do
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
expect(user.balance.reload.amount.to_s).to(eq("0.2034"))
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user does not have enough balance" do
|
||||
it "returns withdrawl error" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 0.0034)
|
||||
)
|
||||
|
||||
variables = {
|
||||
"amount": "0.80",
|
||||
"poolName": "CAKE/BNB",
|
||||
}
|
||||
|
||||
context = { current_user: user }
|
||||
|
||||
result = XStakeSchema.execute(
|
||||
query_string,
|
||||
variables: variables,
|
||||
context: context
|
||||
).to_h.with_indifferent_access
|
||||
|
||||
expect(result).to(eq({
|
||||
"data" => {
|
||||
"createStakeOrder" => {
|
||||
"errors" => [{
|
||||
"fullMessages" => ["Quantia saldo insuficiente"],
|
||||
"fieldName" => "amount",
|
||||
"messages" => ["saldo insuficiente"],
|
||||
"path" => ["attributes", "amount"],
|
||||
}],
|
||||
"order" => nil,
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
expect(user.balance.reload.amount.to_s).to(eq("0.0034"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -32,11 +32,8 @@ RSpec.describe(Mutations::CreateStakeRemoveOrder, type: :mutation) do
|
||||
end
|
||||
|
||||
context "when the user has enough balance" do
|
||||
it "withdraws from his account and creates a buy order" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 0)
|
||||
)
|
||||
it "creates a stake order" do
|
||||
user = create(:user)
|
||||
|
||||
variables = {
|
||||
"amount": "200.80",
|
||||
@@ -69,10 +66,7 @@ RSpec.describe(Mutations::CreateStakeRemoveOrder, type: :mutation) do
|
||||
|
||||
context "when it repeats the mutation with a request in `processing`" do
|
||||
it "update amount from the order" do
|
||||
user = create(
|
||||
:user,
|
||||
balance: build(:balance, amount: 0)
|
||||
)
|
||||
user = create(:user)
|
||||
|
||||
create(:stake_order, amount: -200.8, user: user, pool_name: "CAKE/BNB")
|
||||
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
# 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
|
||||
# user_id :bigint not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_balances_on_user_id (user_id)
|
||||
#
|
||||
# Foreign Keys
|
||||
#
|
||||
# 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)) }
|
||||
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
|
||||
@@ -33,7 +33,6 @@ RSpec.describe(User, type: :model) do
|
||||
describe "associations" do
|
||||
it { is_expected.to(have_many(:documents)) }
|
||||
it { is_expected.to(have_many(:stake_orders)) }
|
||||
it { is_expected.to(have_one(:balance)) }
|
||||
it { is_expected.to(have_one(:fiat_balance)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe(BalancePolicy, type: :policy) do
|
||||
context "when user has balances" do
|
||||
it "return only balances from a user" do
|
||||
create(:balance)
|
||||
create(:balance)
|
||||
|
||||
user = build(:user)
|
||||
balance = create(:balance, user: user)
|
||||
|
||||
balances = BalancePolicy::Scope.new(user, Balance).resolve
|
||||
|
||||
expect(balances).to(eq([balance]))
|
||||
end
|
||||
end
|
||||
|
||||
context "when user has not balances" do
|
||||
it "return empty array" do
|
||||
create(:balance)
|
||||
create(:balance)
|
||||
|
||||
user = build(:user)
|
||||
|
||||
balances = BalancePolicy::Scope.new(user, Balance).resolve
|
||||
|
||||
expect(balances).to(eq([]))
|
||||
end
|
||||
end
|
||||
|
||||
context "when user is nil" do
|
||||
it "return empty array" do
|
||||
create(:balance)
|
||||
create(:balance)
|
||||
|
||||
balances = BalancePolicy::Scope.new(nil, Balance).resolve
|
||||
|
||||
expect(balances).to(eq([]))
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user