export function createAttribute({ name, attributeValues = ["value"], type = "PRODUCT_TYPE", inputType = "DROPDOWN", filterableInDashboard = false, values = [], }) { if ( inputType === "MULTISELECT" || inputType === "DROPDOWN" || inputType === "SWATCH" ) { values = attributeValues.map(element => `{name:"${element}"}`); } const mutation = `mutation{ attributeCreate(input:{ name:"${name}" valueRequired:false type:${type} values: [${values}] inputType: ${inputType} filterableInDashboard: ${filterableInDashboard} }){ attribute{ id name slug choices(first: 100){ edges{ node{ name } } } } errors{ field message } } }`; return cy .sendRequestWithQuery(mutation) .its("body.data.attributeCreate.attribute"); } export function getAttributes(first, search) { const mutation = `query{ attributes(first:${first}, filter:{ search:"${search}" }){ edges{ node{ id name } } } }`; return cy .sendRequestWithQuery(mutation) .then(resp => resp.body.data.attributes.edges); } export function deleteAttribute(attributeId) { const mutation = `mutation{ attributeDelete(id:"${attributeId}"){ errors{ field message } } }`; return cy.sendRequestWithQuery(mutation); } export function getAttribute(attributeId) { const query = `query{ attribute(id:"${attributeId}"){ id inputType name slug type entityType valueRequired visibleInStorefront availableInGrid unit choices(first: 100){ edges{ node{ file{ contentType } } } } } }`; return cy.sendRequestWithQuery(query).its("body.data.attribute"); } export function updateAttribute({ attributeId, filterableInDashboard }) { const mutation = `mutation{ attributeUpdate(id:"${attributeId}" input:{ filterableInDashboard: ${filterableInDashboard} }){ attribute{ id filterableInDashboard } errors{ field message } } }`; return cy.sendRequestWithQuery(mutation); }