本文整理汇总了Python中tests.utils.get_graphql_content函数的典型用法代码示例。如果您正苦于以下问题:Python get_graphql_content函数的具体用法?Python get_graphql_content怎么用?Python get_graphql_content使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_graphql_content函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_query_users
def test_query_users(admin_api_client, user_api_client):
query = """
query Users($isStaff: Boolean) {
users(isStaff: $isStaff) {
totalCount
edges {
node {
isStaff
}
}
}
}
"""
variables = json.dumps({'isStaff': True})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
users = content['data']['users']['edges']
assert users
assert all([user['node']['isStaff'] for user in users])
variables = json.dumps({'isStaff': False})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
users = content['data']['users']['edges']
assert users
assert all([not user['node']['isStaff'] for user in users])
# check permissions
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
assert_no_permission(response)
示例2: test_create_token_mutation
def test_create_token_mutation(admin_client, staff_user):
query = '''
mutation {
tokenCreate(email: "%(email)s", password: "%(password)s") {
token
errors {
field
message
}
}
}
'''
success_query = query % {'email': staff_user.email, 'password': 'password'}
response = admin_client.post(
reverse('api'), json.dumps({'query': success_query}),
content_type='application/json')
content = get_graphql_content(response)
assert 'errors' not in content
token_data = content['data']['tokenCreate']
assert token_data['token']
assert not token_data['errors']
error_query = query % {'email': staff_user.email, 'password': 'wat'}
response = admin_client.post(
reverse('api'), json.dumps({'query': error_query}),
content_type='application/json')
content = get_graphql_content(response)
assert 'errors' not in content
token_data = content['data']['tokenCreate']
assert not token_data['token']
errors = token_data['errors']
assert errors
assert not errors[0]['field']
示例3: test_voucher_permissions
def test_voucher_permissions(
staff_api_client, staff_user, permission_manage_discounts):
query = """
query vouchers{
vouchers(first: 1) {
edges {
node {
name
}
}
}
}
"""
# Query to ensure user with no permissions can't see vouchers
response = staff_api_client.post(reverse('api'), {'query': query})
content = get_graphql_content(response)
message = 'You do not have permission to perform this action'
assert content['errors'][0]['message'] == message
# Give staff user proper permissions
staff_user.user_permissions.add(permission_manage_discounts)
# Query again
response = staff_api_client.post(reverse('api'), {'query': query})
content = get_graphql_content(response)
assert 'errors' not in content
示例4: test_non_staff_user_can_only_see_his_order
def test_non_staff_user_can_only_see_his_order(user_api_client, order):
# FIXME: Remove client.login() when JWT authentication is re-enabled.
user_api_client.login(username=order.user.email, password='password')
query = """
query OrderQuery($id: ID!) {
order(id: $id) {
orderId
}
}
"""
ID = graphene.Node.to_global_id('Order', order.id)
variables = json.dumps({'id': ID})
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
order_data = content['data']['order']
assert order_data['orderId'] == order.pk
order.user = None
order.save()
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
order_data = content['data']['order']
assert not order_data
示例5: test_category_create_mutation
def test_category_create_mutation(admin_api_client):
query = """
mutation($name: String, $slug: String, $description: String, $parentId: ID) {
categoryCreate(
input: {
name: $name
slug: $slug
description: $description
parent: $parentId
}
) {
category {
id
name
slug
description
parent {
name
id
}
}
errors {
field
message
}
}
}
"""
category_name = 'Test category'
category_slug = slugify(category_name)
category_description = 'Test description'
# test creating root category
variables = json.dumps({
'name': category_name, 'description': category_description,
'slug': category_slug})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['categoryCreate']
assert data['errors'] == []
assert data['category']['name'] == category_name
assert data['category']['description'] == category_description
assert not data['category']['parent']
# test creating subcategory
parent_id = data['category']['id']
variables = json.dumps({
'name': category_name, 'description': category_description,
'parentId': parent_id, 'slug': category_slug})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['categoryCreate']
assert data['errors'] == []
assert data['category']['parent']['id'] == parent_id
示例6: test_category_level
def test_category_level(user_api_client, default_category):
category = default_category
query = """
query leveled_categories($level: Int) {
categories(level: $level) {
edges {
node {
name
parent {
name
}
}
}
}
}
"""
child = Category.objects.create(
name='child', slug='chi-ld', parent=category)
variables = json.dumps({'level': 0})
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
category_data = content['data']['categories']['edges'][0]['node']
assert category_data['name'] == category.name
assert category_data['parent'] == None
query = """
query leveled_categories($level: Int) {
categories(level: $level) {
edges {
node {
name
parent {
name
}
}
}
}
}
"""
variables = json.dumps({'level': 1})
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
category_data = content['data']['categories']['edges'][0]['node']
assert category_data['name'] == child.name
assert category_data['parent']['name'] == category.name
示例7: test_reorder_images
def test_reorder_images(admin_api_client, product_with_images):
query = """
mutation reorderImages($product_id: ID!, $images_ids: [ID]!) {
productImageReorder(productId: $product_id, imagesIds: $images_ids) {
product {
id
}
}
}
"""
product = product_with_images
images = product.images.all()
image_0 = images[0]
image_1 = images[1]
image_0_id = graphene.Node.to_global_id('ProductImage', image_0.id)
image_1_id = graphene.Node.to_global_id('ProductImage', image_1.id)
product_id = graphene.Node.to_global_id('Product', product.id)
variables = {
'product_id': product_id, 'images_ids': [image_1_id, image_0_id]}
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
# Check if order has been changed
product.refresh_from_db()
reordered_images = product.images.all()
reordered_image_0 = reordered_images[0]
reordered_image_1 = reordered_images[1]
assert image_0.id == reordered_image_1.id
assert image_1.id == reordered_image_0.id
示例8: test_create_collection
def test_create_collection(admin_api_client, product_list):
query = """
mutation createCollection(
$name: String!, $slug: String!, $products: [ID], $backgroundImage: Upload!, $isPublished: Boolean!) {
collectionCreate(
input: {name: $name, slug: $slug, products: $products, backgroundImage: $backgroundImage, isPublished: $isPublished}) {
collection {
name
slug
products {
totalCount
}
}
}
}
"""
product_ids = [
to_global_id('Product', product.pk) for product in product_list]
image_file, image_name = create_image()
name = 'test-name'
slug = 'test-slug'
variables = {
'name': name, 'slug': slug, 'products': product_ids,
'backgroundImage': image_name, 'isPublished': True}
body = get_multipart_request_body(query, variables, image_file, image_name)
response = admin_api_client.post_multipart(reverse('api'), body)
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['collectionCreate']['collection']
assert data['name'] == name
assert data['slug'] == slug
assert data['products']['totalCount'] == len(product_ids)
collection = Collection.objects.get(slug=slug)
assert collection.background_image.file
示例9: test_query_staff
def test_query_staff(
admin_api_client, user_api_client, staff_user, customer_user,
admin_user):
query = """
{
staffUsers {
edges {
node {
email
isStaff
}
}
}
}
"""
variables = json.dumps({})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
data = content['data']['staffUsers']['edges']
assert len(data) == 2
staff_emails = [user['node']['email'] for user in data]
assert sorted(staff_emails) == [admin_user.email, staff_user.email]
assert all([user['node']['isStaff'] for user in data])
# check permissions
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
assert_no_permission(response)
示例10: test_voucher_query
def test_voucher_query(
admin_api_client, voucher):
query = """
query vouchers{
vouchers(first: 1) {
edges {
node {
type
name
code
usageLimit
used
startDate
discountValueType
discountValue
}
}
}
}
"""
response = admin_api_client.post(reverse('api'), {'query': query})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['vouchers']['edges'][0]['node']
assert data['type'] == voucher.type.upper()
assert data['name'] == voucher.name
assert data['code'] == voucher.code
assert data['usageLimit'] == voucher.usage_limit
assert data['used'] == voucher.used
assert data['startDate'] == voucher.start_date.isoformat()
assert data['discountValueType'] == voucher.discount_value_type.upper()
assert data['discountValue'] == voucher.discount_value
示例11: test_sale_delete_mutation
def test_sale_delete_mutation(user_api_client, admin_api_client, sale):
query = """
mutation DeleteSale($id: ID!) {
saleDelete(id: $id) {
sale {
name
id
}
errors {
field
message
}
}
}
"""
variables = json.dumps({
'id': graphene.Node.to_global_id('Sale', sale.id)})
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
assert_no_permission(response)
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['saleDelete']
assert data['sale']['name'] == sale.name
with pytest.raises(sale._meta.model.DoesNotExist):
sale.refresh_from_db()
示例12: test_create_sale
def test_create_sale(user_api_client, admin_api_client):
query = """
mutation saleCreate(
$type: DiscountValueTypeEnum, $name: String, $value: Decimal) {
saleCreate(input: {name: $name, type: $type, value: $value}) {
errors {
field
message
}
sale {
type
name
value
}
}
}
"""
variables = json.dumps({
'name': 'test sale',
'type': DiscountValueTypeEnum.FIXED.name,
'value': '10.12'})
response = user_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
assert_no_permission(response)
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['saleCreate']['sale']
assert data['type'] == DiscountValueType.FIXED.upper()
assert data['name'] == 'test sale'
assert data['value'] == 10.12
示例13: test_token_create_user_data
def test_token_create_user_data(
permission_manage_orders, staff_client, staff_user):
query = """
mutation {
tokenCreate(email: "%(email)s", password: "%(password)s") {
user {
id
email
permissions {
code
name
}
}
}
}
"""
permission = permission_manage_orders
staff_user.user_permissions.add(permission)
code = '.'.join([permission.content_type.name, permission.codename])
name = permission.name
user_id = graphene.Node.to_global_id('User', staff_user.id)
query = query % {'email': staff_user.email, 'password': 'password'}
response = staff_client.post(
reverse('api'), json.dumps({'query': query}),
content_type='application/json')
content = get_graphql_content(response)
assert 'errors' not in content
token_data = content['data']['tokenCreate']
assert token_data['user']['id'] == user_id
assert token_data['user']['email'] == staff_user.email
assert token_data['user']['permissions'][0]['name'] == name
assert token_data['user']['permissions'][0]['code'] == code
示例14: test_update_attribute_choice_value
def test_update_attribute_choice_value(admin_api_client, pink_choice_value):
value = pink_choice_value
query = """
mutation updateChoice($id: ID!, $name: String!, $slug: String!) {
attributeChoiceValueUpdate(
id: $id, input: {name: $name, slug: $slug}) {
attributeChoiceValue {
name
slug
}
}
}
"""
id = graphene.Node.to_global_id('ProductAttributeValue', value.id)
name = 'Crimson'
slug = value.slug
variables = json.dumps(
{'name': name, 'slug': slug, 'id': id})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
value.refresh_from_db()
data = content[
'data']['attributeChoiceValueUpdate']['attributeChoiceValue']
assert data['name'] == name == value.name
示例15: test_cancel_fulfillment_restock_items
def test_cancel_fulfillment_restock_items(
admin_api_client, fulfillment, admin_user):
query = """
mutation cancelFulfillment($id: ID!, $restock: Boolean) {
fulfillmentCancel(id: $id, input: {restock: $restock}) {
fulfillment {
status
}
}
}
"""
fulfillment_id = graphene.Node.to_global_id('Fulfillment', fulfillment.id)
variables = json.dumps({'id': fulfillment_id, 'restock': True})
response = admin_api_client.post(
reverse('api'), {'query': query, 'variables': variables})
content = get_graphql_content(response)
assert 'errors' not in content
data = content['data']['fulfillmentCancel']['fulfillment']
assert data['status'] == FulfillmentStatus.CANCELED.upper()
event_restocked_items = fulfillment.order.events.get()
assert event_restocked_items.type == (
OrderEvents.FULFILLMENT_RESTOCKED_ITEMS.value)
assert event_restocked_items.parameters == {
'quantity': fulfillment.get_total_quantity()}
assert event_restocked_items.user == admin_user