@spree/storefront-api-v2-sdk
Version:
Node module to easily integrate your JavaScript or TypeScript application with Spree API V2. You can create an entirely custom Storefront in JS/TS with this package including one page checkout, Single Page Apps, PWAs and so on
81 lines (70 loc) • 2.91 kB
text/typescript
import { Client, makeClient } from '@spree/storefront-api-v2-sdk'
import { RelationType } from '@spree/storefront-api-v2-sdk/types/interfaces/Relationships'
describe('using SDK client in browser', function () {
beforeEach(function () {
const client = makeClient({
host: 'http://spree:3000'
})
cy.wrap(client).as('client')
cy.fixture('order-full-address').as('orderFullAddress')
})
it('completes guest order', function () {
const { orderFullAddress } = this
const client: Client = this.client
cy
.wrap(null)
.then(() => client.cart.create())
.then((cartCreateResponse) => {
const { token: orderToken, number: orderNumber } = cartCreateResponse.success().data.attributes
return cy.wrap(null)
.then(() => client.cart.addItem({ orderToken }, { variant_id: '1', quantity: 1 }))
.then(() => client.checkout.orderUpdate({ orderToken }, { order: orderFullAddress }))
.then(() => client.checkout.shippingMethods({ orderToken }))
.then((shippingResponse) => {
const firstShipment = shippingResponse.success().data[0]
return client.checkout.orderUpdate({ orderToken }, {
order: {
payments_attributes: [
{
payment_method_id: 3 // "Check" payment method.
}
],
shipments_attributes: [
{
id: +firstShipment.id,
selected_shipping_rate_id: (firstShipment.relationships.shipping_rates.data as RelationType[])[0].id
}
]
}
})
})
.then(() => client.checkout.complete({ orderToken }))
.then((orderCompleteResponse) => expect(orderCompleteResponse.isSuccess()).to.be.true)
.then(() => client.order.status({ orderToken }, orderNumber ))
.then((statusResponse) => expect(statusResponse.isSuccess()).to.be.true)
})
})
it('shows cart', function () {
const client: Client = this.client
cy
.wrap(null)
.then(() => client.cart.create())
.then((cartCreateResponse) => {
const orderToken = cartCreateResponse.success().data.attributes.token
return client.cart.show({ orderToken })
})
.then((cartShowResponse) => expect(cartShowResponse.isSuccess()).to.be.true)
})
it('lists payment methods', function () {
const client: Client = this.client
cy
.wrap(null)
.then(() => client.cart.create())
.then((cartCreateResponse) => {
const orderToken = cartCreateResponse.success().data.attributes.token
return cy.wrap(null)
.then(() => client.checkout.paymentMethods({ orderToken }))
.then((paymentMethodsResponse) => expect(paymentMethodsResponse.isSuccess()).to.be.true)
})
})
})