first commit
This commit is contained in:
216
modules/web_shop_shopify/tests/tools.py
Normal file
216
modules/web_shop_shopify/tests/tools.py
Normal file
@@ -0,0 +1,216 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
import shopify
|
||||
|
||||
from trytond.modules.web_shop_shopify.common import id2gid
|
||||
from trytond.modules.web_shop_shopify.shopify_retry import GraphQLException
|
||||
|
||||
|
||||
def get_location():
|
||||
return shopify.GraphQL().execute('''{
|
||||
locations(first:1) {
|
||||
nodes {
|
||||
id
|
||||
}
|
||||
}
|
||||
}''')['data']['locations']['nodes'][0]
|
||||
|
||||
|
||||
def get_inventory_levels(location):
|
||||
return shopify.GraphQL().execute('''query InventoryLevels($id: ID!) {
|
||||
location(id: $id) {
|
||||
inventoryLevels(first: 250) {
|
||||
nodes {
|
||||
item {
|
||||
id
|
||||
}
|
||||
quantities(names: ["available"]) {
|
||||
name
|
||||
quantity
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'id': location['id'],
|
||||
})['data']['location']['inventoryLevels']['nodes']
|
||||
|
||||
|
||||
def get_product(id):
|
||||
return shopify.GraphQL().execute('''query Product($id: ID!) {
|
||||
product(id: $id) {
|
||||
status
|
||||
}
|
||||
}''', {
|
||||
'id': id2gid('Product', id),
|
||||
})['data']['product']
|
||||
|
||||
|
||||
def delete_product(id):
|
||||
result = shopify.GraphQL().execute('''mutation productDelete($id: ID!) {
|
||||
productDelete(input: {id: $id}) {
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'id': id,
|
||||
})['data']['productDelete']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
|
||||
|
||||
def delete_collection(id):
|
||||
result = shopify.GraphQL().execute('''mutation collectionDelete($id: ID!) {
|
||||
collectionDelete(input: {id: $id}) {
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'id': id,
|
||||
})['data']['collectionDelete']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
|
||||
|
||||
def create_customer(customer):
|
||||
result = shopify.GraphQL().execute('''mutation customerCreate(
|
||||
$input: CustomerInput!) {
|
||||
customerCreate(input: $input) {
|
||||
customer {
|
||||
id
|
||||
}
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'input': customer,
|
||||
})['data']['customerCreate']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
return result['customer']
|
||||
|
||||
|
||||
def delete_customer(id):
|
||||
result = shopify.GraphQL().execute('''mutation customerDelete($id: ID!) {
|
||||
customerDelete(input: {id: $id}) {
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'id': id,
|
||||
})['data']['customerDelete']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
|
||||
|
||||
def create_order(order):
|
||||
result = shopify.GraphQL().execute('''mutation orderCreate(
|
||||
$order: OrderCreateOrderInput!) {
|
||||
orderCreate(order: $order) {
|
||||
order {
|
||||
id
|
||||
totalPriceSet {
|
||||
presentmentMoney {
|
||||
amount
|
||||
currencyCode
|
||||
}
|
||||
}
|
||||
displayFinancialStatus
|
||||
displayFulfillmentStatus
|
||||
transactions(first: 250) {
|
||||
id
|
||||
}
|
||||
fulfillments {
|
||||
id
|
||||
}
|
||||
closed
|
||||
}
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'order': order,
|
||||
})['data']['orderCreate']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
return result['order']
|
||||
|
||||
|
||||
def get_order(id):
|
||||
return shopify.GraphQL().execute('''query Order($id: ID!) {
|
||||
order(id: $id) {
|
||||
id
|
||||
totalPriceSet {
|
||||
presentmentMoney {
|
||||
amount
|
||||
currencyCode
|
||||
}
|
||||
}
|
||||
displayFinancialStatus
|
||||
displayFulfillmentStatus
|
||||
transactions(first: 250) {
|
||||
id
|
||||
}
|
||||
fulfillments {
|
||||
id
|
||||
fulfillmentLineItems(first: 10) {
|
||||
nodes {
|
||||
quantity
|
||||
}
|
||||
}
|
||||
}
|
||||
closed
|
||||
}
|
||||
}''', {
|
||||
'id': id,
|
||||
})['data']['order']
|
||||
|
||||
|
||||
def capture_order(id, amount, parent_transaction_id):
|
||||
result = shopify.GraphQL().execute('''mutation orderCapture(
|
||||
$input: OrderCaptureInput!) {
|
||||
orderCapture(input: $input) {
|
||||
transaction {
|
||||
id
|
||||
}
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'input': {
|
||||
'amount': amount,
|
||||
'id': id,
|
||||
'parentTransactionId': parent_transaction_id,
|
||||
},
|
||||
})['data']['orderCapture']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
return result['transaction']
|
||||
|
||||
|
||||
def delete_order(id):
|
||||
result = shopify.GraphQL().execute('''mutation orderDelete($orderId: ID!) {
|
||||
orderDelete(orderId: $orderId) {
|
||||
userErrors {
|
||||
field
|
||||
message
|
||||
}
|
||||
}
|
||||
}''', {
|
||||
'orderId': id,
|
||||
})['data']['orderDelete']
|
||||
if errors := result.get('userErrors'):
|
||||
raise GraphQLException({'errors': errors})
|
||||
Reference in New Issue
Block a user