Saleor 2705 tests for warehouse (#1143)

* tests for warehouses

* tests for warehouses
This commit is contained in:
Karolina Rakoczy 2021-07-06 12:32:09 +02:00 committed by GitHub
parent 12e9cf0472
commit 5b3465861f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 196 additions and 29 deletions

View file

@ -26,6 +26,7 @@ export function createWarehouse({ name, shippingZone, address, slug = name }) {
.sendRequestWithQuery(mutation) .sendRequestWithQuery(mutation)
.its("body.data.createWarehouse.warehouse"); .its("body.data.createWarehouse.warehouse");
} }
export function getWarehouses(first, search) { export function getWarehouses(first, search) {
const query = `query{ const query = `query{
warehouses(first:${first}, filter:{ warehouses(first:${first}, filter:{
@ -43,6 +44,7 @@ export function getWarehouses(first, search) {
.sendRequestWithQuery(query) .sendRequestWithQuery(query)
.then(resp => resp.body.data.warehouses.edges); .then(resp => resp.body.data.warehouses.edges);
} }
export function deleteWarehouse(warehouseId) { export function deleteWarehouse(warehouseId) {
const mutation = `mutation{ const mutation = `mutation{
deleteWarehouse(id:"${warehouseId}"){ deleteWarehouse(id:"${warehouseId}"){
@ -54,3 +56,29 @@ export function deleteWarehouse(warehouseId) {
}`; }`;
return cy.sendRequestWithQuery(mutation); return cy.sendRequestWithQuery(mutation);
} }
export function getWarehouse(warehouseId) {
const query = `query{
warehouse(id:"${warehouseId}"){
id
name
address{
companyName
streetAddress1
streetAddress2
city
postalCode
countryArea
phone
}
shippingZones(first:100){
edges{
node{
id
}
}
}
}
}`;
return cy.sendRequestWithQuery(query).its("body.data.warehouse");
}

View file

@ -0,0 +1,3 @@
export const WAREHOUSES_DETAILS = {
nameInput: '[name="name"]'
};

View file

@ -0,0 +1,3 @@
export const WAREHOUSES_LIST = {
createNewButton: '[data-test-id="createWarehouse"]'
};

View file

@ -23,7 +23,7 @@
"postalCode": "70957", "postalCode": "70957",
"country": "US", "country": "US",
"countryArea": "LA", "countryArea": "LA",
"phone": "2025550189", "phone": "+12025550189",
"currency": "USD", "currency": "USD",
"countryFullName": "United States of America" "countryFullName": "United States of America"
} }

View file

@ -1,25 +1,132 @@
// <reference types="cypress" /> // <reference types="cypress" />
import { urlList } from "../../../url/urlList"; import faker from "faker";
import { createShippingZone } from "../../../apiRequests/ShippingMethod";
import { createWarehouse, getWarehouse } from "../../../apiRequests/Warehouse";
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
import { SHIPPING_ZONE_DETAILS } from "../../../elements/shipping/shipping-zone-details";
import { WAREHOUSES_DETAILS } from "../../../elements/warehouses/warehouse-details";
import { WAREHOUSES_LIST } from "../../../elements/warehouses/warehouses-list";
import { fillUpBasicAddress } from "../../../steps/shared/addressForm";
import { fillAutocompleteSelect } from "../../../steps/shared/autocompleteSelect";
import {
shippingZoneDetailsUrl,
urlList,
warehouseDetailsUrl
} from "../../../url/urlList";
import { getDefaultChannel } from "../../../utils/channelsUtils";
import { deleteShippingStartsWith } from "../../../utils/shippingUtils";
describe("Warehouse settings", () => { describe("Warehouse settings", () => {
const startsWith = "CyWarehouse";
let usAddress;
before(() => {
cy.clearSessionData().loginUserViaRequest();
deleteShippingStartsWith(startsWith);
cy.fixture("addresses").then(addresses => {
usAddress = addresses.usAddress;
});
});
beforeEach(() => { beforeEach(() => {
cy.clearSessionData(); cy.clearSessionData().loginUserViaRequest();
}); });
xit("Warehouse section visible in the configuration", () => { it("should create warehouse", () => {
cy.visit(urlList.configuration) const name = `${startsWith}${faker.datatype.number()}`;
.loginUser()
.get("[data-test-id=warehouses][data-test=settingsSubsection]")
.click();
cy.location("pathname").should("eq", "/warehouses/");
});
xit("Editing warehouse is available", () => {
cy.visit(urlList.warehouses) cy.visit(urlList.warehouses)
.loginUser() .get(WAREHOUSES_LIST.createNewButton)
.get("[data-test=editButton]") .click();
.first() cy.get(WAREHOUSES_DETAILS.nameInput).type(name);
fillUpBasicAddress(usAddress);
cy.addAliasToGraphRequest("WarehouseCreate")
.get(BUTTON_SELECTORS.confirm)
.click() .click()
.get("[data-test=generalInformationSection]"); .wait("@WarehouseCreate")
.its("response.body.data.createWarehouse.warehouse")
.then(warehouse => {
getWarehouse(warehouse.id);
})
.then(warehouse => {
const addressResp = warehouse.address;
expect(warehouse.name).to.be.eq(name);
expect(addressResp).to.have.property(
"city",
usAddress.city.toUpperCase()
);
expect(addressResp).to.have.property(
"countryArea",
usAddress.countryArea
);
expect(addressResp).to.have.property("phone", usAddress.phone);
expect(addressResp).to.have.property(
"postalCode",
usAddress.postalCode
);
expect(addressResp).to.have.property(
"streetAddress1",
usAddress.streetAddress1
);
expect(addressResp).to.have.property(
"streetAddress2",
usAddress.streetAddress2
);
});
});
it("should add warehouse to shipping zone", () => {
const name = `${startsWith}${faker.datatype.number()}`;
let defaultChannel;
let warehouse;
let shippingZone;
getDefaultChannel()
.then(channelResp => {
defaultChannel = channelResp;
createWarehouse({
name,
address: usAddress
});
})
.then(warehouseResp => {
warehouse = warehouseResp;
createShippingZone(name, "US", defaultChannel.id);
})
.then(shippingZoneResp => {
shippingZone = shippingZoneResp;
cy.visit(shippingZoneDetailsUrl(shippingZone.id));
fillAutocompleteSelect(
SHIPPING_ZONE_DETAILS.warehouseSelector,
warehouse.name
);
cy.addAliasToGraphRequest("UpdateShippingZone")
.get(BUTTON_SELECTORS.confirm)
.click()
.wait("@UpdateShippingZone");
getWarehouse(warehouse.id);
})
.then(warehouseResp => {
expect(warehouseResp.shippingZones.edges[0].node.id).to.be.eq(
shippingZone.id
);
});
});
it("should delete warehouse", () => {
const name = `${startsWith}${faker.datatype.number()}`;
createWarehouse({
name,
address: usAddress
}).then(warehouse => {
cy.visit(warehouseDetailsUrl(warehouse.id))
.get(BUTTON_SELECTORS.deleteButton)
.click()
.addAliasToGraphRequest("WarehouseDelete")
.get(BUTTON_SELECTORS.submit)
.click()
.wait("@WarehouseDelete");
getWarehouse(warehouse.id).should("be.null");
});
}); });
}); });

View file

@ -6,8 +6,13 @@ export function fillUpAddressForm(address) {
cy.get(ADDRESS_SELECTORS.firstName) cy.get(ADDRESS_SELECTORS.firstName)
.type(address.firstName) .type(address.firstName)
.get(ADDRESS_SELECTORS.lastName) .get(ADDRESS_SELECTORS.lastName)
.type(address.lastName) .type(address.lastName);
.get(ADDRESS_SELECTORS.companyName) fillUpBasicAddress(address);
cy.get(BUTTON_SELECTORS.submit).click();
}
export function fillUpBasicAddress(address) {
cy.get(ADDRESS_SELECTORS.companyName)
.type(address.companyName) .type(address.companyName)
.get(ADDRESS_SELECTORS.phone) .get(ADDRESS_SELECTORS.phone)
.type(address.phone) .type(address.phone)
@ -20,8 +25,5 @@ export function fillUpAddressForm(address) {
.get(ADDRESS_SELECTORS.postalCode) .get(ADDRESS_SELECTORS.postalCode)
.type(address.postalCode); .type(address.postalCode);
fillAutocompleteSelect(ADDRESS_SELECTORS.country, address.countryFullName); fillAutocompleteSelect(ADDRESS_SELECTORS.country, address.countryFullName);
cy.get(ADDRESS_SELECTORS.countryArea) cy.get(ADDRESS_SELECTORS.countryArea).type(address.countryArea);
.type(address.countryArea)
.get(BUTTON_SELECTORS.submit)
.click();
} }

View file

@ -26,5 +26,11 @@ export const staffMemberDetailsUrl = staffMemberId =>
export const permissionGroupDetails = permissionGroupId => export const permissionGroupDetails = permissionGroupId =>
`${urlList.permissionsGroups}${permissionGroupId}`; `${urlList.permissionsGroups}${permissionGroupId}`;
export const shippingZoneDetailsUrl = shippingZoneId =>
`${urlList.shippingMethods}${shippingZoneId}`;
export const warehouseDetailsUrl = warehouseId =>
`${urlList.warehouses}${warehouseId}`;
export const productTypeDetailsUrl = productTypeId => export const productTypeDetailsUrl = productTypeId =>
`${urlList.productTypes}${productTypeId}`; `${urlList.productTypes}${productTypeId}`;

View file

@ -67,6 +67,7 @@ const DialogButtons: React.FC<DialogButtonsProps> = props => {
className={classNames({ className={classNames({
[classes.deleteButton]: variant === "delete" [classes.deleteButton]: variant === "delete"
})} })}
data-test-id="submit"
data-test="submit" data-test="submit"
> >
{confirmButtonLabel || {confirmButtonLabel ||

View file

@ -147,6 +147,7 @@ const CompanyAddressForm: React.FC<CompanyAddressFormProps> = props => {
<FormSpacer /> <FormSpacer />
<Grid> <Grid>
<SingleAutocompleteSelectField <SingleAutocompleteSelectField
data-test-id="address-edit-country-select-field"
disabled={disabled} disabled={disabled}
displayValue={displayCountry} displayValue={displayCountry}
error={!!formErrors.country} error={!!formErrors.country}

View file

@ -59,6 +59,7 @@ const WarehousesSection: React.FC<WarehousesSectionProps> = ({
label: intl.formatMessage(messages.selectFieldAddText), label: intl.formatMessage(messages.selectFieldAddText),
onClick: onAdd onClick: onAdd
}} }}
testId="warehouses"
choices={choices} choices={choices}
displayValues={displayValues} displayValues={displayValues}
fetchChoices={onSearchChange} fetchChoices={onSearchChange}

View file

@ -22874,7 +22874,7 @@ exports[`Storyshots Shipping zones details / Settings Card default 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -22908,7 +22908,7 @@ exports[`Storyshots Shipping zones details / Settings Card default 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -235335,7 +235335,7 @@ exports[`Storyshots Views / Shipping / Shipping zone details default 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -235369,7 +235369,7 @@ exports[`Storyshots Views / Shipping / Shipping zone details default 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -236447,7 +236447,7 @@ exports[`Storyshots Views / Shipping / Shipping zone details form errors 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -236481,7 +236481,7 @@ exports[`Storyshots Views / Shipping / Shipping zone details form errors 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id" class="MuiButtonBase-root-id MuiIconButton-root-id MultiAutocompleteSelectField-chipClose-id"
data-test-id="remove" data-test-id="warehousesRemove"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -239814,6 +239814,7 @@ exports[`Storyshots Views / Site settings / Page default 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -240359,6 +240360,7 @@ exports[`Storyshots Views / Site settings / Page form errors 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -240908,6 +240910,7 @@ exports[`Storyshots Views / Site settings / Page loading 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -247018,6 +247021,7 @@ exports[`Storyshots Views / Warehouses / Create warehouse default 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -247487,6 +247491,7 @@ exports[`Storyshots Views / Warehouses / Create warehouse form errors 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -247947,6 +247952,7 @@ exports[`Storyshots Views / Warehouses / Create warehouse loading 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -248389,6 +248395,7 @@ exports[`Storyshots Views / Warehouses / Warehouse details default 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -248931,6 +248938,7 @@ exports[`Storyshots Views / Warehouses / Warehouse details form errors 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -249470,6 +249478,7 @@ exports[`Storyshots Views / Warehouses / Warehouse details loading 1`] = `
> >
<div <div
class="SingleAutocompleteSelectField-container-id" class="SingleAutocompleteSelectField-container-id"
data-test-id="address-edit-country-select-field"
> >
<div <div
class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id" class="MuiFormControl-root-id MuiTextField-root-id MuiFormControl-fullWidth-id"
@ -249670,6 +249679,7 @@ exports[`Storyshots Views / Warehouses / Warehouse list default 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id" class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id"
data-test-id="createWarehouse"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -250226,6 +250236,7 @@ exports[`Storyshots Views / Warehouses / Warehouse list limits reached 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id MuiButton-disabled-id MuiButtonBase-disabled-id" class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id MuiButton-disabled-id MuiButtonBase-disabled-id"
data-test-id="createWarehouse"
disabled="" disabled=""
tabindex="-1" tabindex="-1"
type="button" type="button"
@ -250828,6 +250839,7 @@ exports[`Storyshots Views / Warehouses / Warehouse list loading 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id" class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id"
data-test-id="createWarehouse"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -251193,6 +251205,7 @@ exports[`Storyshots Views / Warehouses / Warehouse list no data 1`] = `
</div> </div>
<button <button
class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id" class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id"
data-test-id="createWarehouse"
tabindex="0" tabindex="0"
type="button" type="button"
> >
@ -251487,6 +251500,7 @@ exports[`Storyshots Views / Warehouses / Warehouse list no limits 1`] = `
> >
<button <button
class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id" class="MuiButtonBase-root-id MuiButton-root-id MuiButton-contained-id MuiButton-containedPrimary-id"
data-test-id="createWarehouse"
tabindex="0" tabindex="0"
type="button" type="button"
> >

View file

@ -74,6 +74,7 @@ export const WarehouseListPage: React.FC<WarehouseListPageProps> = ({
} }
> >
<Button <Button
data-test-id="createWarehouse"
color="primary" color="primary"
disabled={limitReached} disabled={limitReached}
variant="contained" variant="contained"