Files
x-stake/spec/graphql/mutations/create_stake_remove_order_spec.rb
2021-09-13 20:54:21 -03:00

101 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe(Mutations::CreateStakeRemoveOrder, type: :mutation) do
let(:query_string) do
<<~GQL
mutation(
$amount: String!,
$poolName: String!,
) {
createStakeRemoveOrder(input: {
order: {
amount: $amount,
poolName: $poolName,
}
}) {
errors {
fullMessages
fieldName
messages
path
}
order {
poolName
status
amount
}
}
}
GQL
end
context "when the user has enough balance" do
it "creates a stake order" do
user = create(:user)
variables = {
"amount": "200.80",
"poolName": "CAKE/BNB",
"status": "PROCESSING",
}
context = { current_user: user }
result = XStakeSchema.execute(
query_string,
variables: variables,
context: context
).to_h.with_indifferent_access
expect(result).to(eq({
"data" => {
"createStakeRemoveOrder" => {
"errors" => nil,
"order" => {
"status" => "PROCESSING",
"amount" => "-200.8",
"poolName" => "CAKE/BNB",
},
},
},
}))
end
end
context "when it repeats the mutation with a request in `processing`" do
it "update amount from the order" do
user = create(:user)
create(:stake_order, amount: -200.8, user: user, pool_name: "CAKE/BNB")
variables = {
"amount": "200.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" => {
"createStakeRemoveOrder" => {
"errors" => nil,
"order" => {
"status" => "PROCESSING",
"amount" => "-401.6",
"poolName" => "CAKE/BNB",
},
},
},
}))
end
end
end