def generate_shop_catalogues():
    shops_fixture = get_data_from_json_fixture('Shops.json')
    products_fixture = get_data_from_json_fixture(
        os.path.join('..', '..', 'saleor', 'saleor', 'static',
                     'populatedb_data.json'))
    # TODO: get the producers from the users_fixture

    expected_catalogues = dict()
    for shop in shops_fixture:
        expected_catalogues[shop['pk']] = {
            'data': {
                'shopCatalogue': {
                    'products': {
                        'edges': []
                    }
                }
            }
        }
        edges = expected_catalogues[
            shop['pk']]['data']['shopCatalogue']['products']['edges']
        for variant_id in shop['fields']['product_variants']:
            variant = [
                entry for entry in products_fixture
                if entry['model'] == 'product.productvariant'
                and entry['pk'] == variant_id
            ][0]
            product = [
                entry for entry in products_fixture
                if entry['model'] == 'product.product'
                and entry['pk'] == variant['fields']['product']
            ][0]
            edges_with_product_id = [
                edge for edge in edges if edge['node']['id'] == product['pk']
            ]
            if edges_with_product_id:
                edge = edges_with_product_id[0]
                new_variant = {'id': variant_id}
                edge['node']['variants'].append(new_variant)
            else:
                node = {
                    'node': {
                        'id': product['pk'],
                        'name': product['fields']['name'],
                        'variants': [{
                            'id': variant_id
                        }]
                    }
                }
                edges.append(node)
    return expected_catalogues
예제 #2
0
def create_users():
    for persona in 'Consommateurs', 'Producteurs', 'Responsables', 'Rex':
        user_data = get_data_from_json_fixture(
            os.path.join('features', 'fixtures', 'Users', persona + '.json'))
        if isinstance(user_data, list):
            for user in user_data:
                create_database_user(user)
        else:
            create_database_user(user_data)
예제 #3
0
def expected_shop_catalogues(context):
    catalogues_folder = os.path.join(settings.GRAPHQL_RESPONSES_FOLDER,
                                     'Consumer', 'Catalogues')
    catalogues = [
        os.path.splitext(f)[0] for f in os.listdir(catalogues_folder)
        if os.path.isfile(os.path.join(catalogues_folder, f))
    ]
    shop_catalogues = {}
    for catalogue in catalogues:
        shop_id = catalogue.split('-')[1]
        shop_catalogues[shop_id] = get_data_from_json_fixture(
            os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Consumer',
                         'Catalogues', '{name}.json'.format(name=catalogue)))
    context.expected_shop_catalogues = shop_catalogues
    return shop_catalogues
예제 #4
0
def get_user_tokens():
    query = login_query()
    client = ApiClient(user=AnonymousUser())
    result = {}
    for persona in 'Consommateurs', 'Producteurs', 'Responsables', 'Rex', 'Softozor':
        user_data = get_data_from_json_fixture(
            os.path.join('Authentication', 'Credentials', persona + '.json'))
        if isinstance(user_data, list):
            user = user_data[0]
        else:
            user = user_data
        variables = dict(email=user['email'], password=user['password'])
        response = get_graphql_content(client.post_graphql(query, variables))
        result[persona] = response['data']['login']['token']
    return result
def generate_shop_list():
    shops_fixture = get_data_from_json_fixture('Shops.json')
    expected_list = {'data': {'shops': {'edges': []}}}
    for shop_fixture in shops_fixture:
        node = {
            'node': {
                'id': shop_fixture['pk'],
                'name': shop_fixture['fields']['name'],
                'description': shop_fixture['fields']['description'],
                'geocoordinates': {
                    'latitude': shop_fixture['fields']['latitude'],
                    'longitude': shop_fixture['fields']['longitude']
                }
            }
        }
        expected_list['data']['shops']['edges'].append(node)
    return expected_list
예제 #6
0
def expired_link(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'ExpiredLink.json'))
    context.expired_link = data
    return data
예제 #7
0
def rex(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Rex.json'))
    create_database_user(user_data)
    context.rex = user_data
    return user_data
예제 #8
0
def softozor(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Softozor.json'))
    create_database_superuser(user_data)
    context.softozor = user_data
    return user_data
예제 #9
0
def producer(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Producteurs.json'))[0]
    create_database_user(user_data)
    context.producer = user_data
    return user_data
예제 #10
0
def manager(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Responsables.json'))[0]
    create_database_user(user_data)
    context.manager = user_data
    return user_data
예제 #11
0
def consumer(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Consommateurs.json'))[0]
    create_database_user(user_data)
    context.consumer = user_data
    return user_data
예제 #12
0
def inactive_customer(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'InactiveConsumer.json'))
    create_database_user(user_data)
    context.inactive_customer = user_data
    return user_data
예제 #13
0
def expected_shop_list(context):
    shop_list = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Consumer',
                     'Shops.json'))
    context.expected_shop_list = shop_list
    return shop_list
예제 #14
0
def wrong_credentials_response(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'LogStaffIn', 'WrongCredentials.json'))
    context.wrong_credentials_response = data
    return data
예제 #15
0
def failed_query_response(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'Logout', 'QueryResponseAfterLogout.json'))
    context.failed_query_response = data
    return data
예제 #16
0
def user_not_admin_response(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'LogStaffIn', 'Consommateur.json'))
    context.user_not_admin_response = data
    return data
예제 #17
0
def password_not_compliant(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'PasswordNotCompliant.json'))
    context.password_not_compliant = data
    return data
예제 #18
0
def successful_set_password(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'ResetUserPassword', 'SuccessfulSetPassword.json'))
    context.successful_set_password = data
    return data
예제 #19
0
def successful_account_confirmation(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'RegisterConsumer', 'SuccessfulAccountConfirmation.json'))
    context.successful_account_confirmation = data
    return data
예제 #20
0
def successful_signup(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'RegisterConsumer', 'SuccessfulConsumerCreation.json'))
    context.successful_signup = data
    return data
예제 #21
0
def successful_logout_response(context):
    data = get_data_from_json_fixture(
        os.path.join(settings.GRAPHQL_RESPONSES_FOLDER, 'Authentication',
                     'Logout', 'Success.json'))
    context.successful_logout_response = data
    return data
예제 #22
0
def unknown(context):
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'NewConsumer.json'))
    set_password(user_data)
    context.unknown = user_data
    return user_data
예제 #23
0
def create_superusers():
    user_data = get_data_from_json_fixture(
        os.path.join('features', 'fixtures', 'Users', 'Softozor.json'))
    create_database_superuser(user_data)