UNPKG

@nguyenmv2/buy-button

Version:

BuyButton.js allows merchants to build Shopify interfaces into any website

65 lines (52 loc) 1.65 kB
import JSBuySDK from 'shopify-buy'; import ShopifyBuy from '../../src/buybutton'; import UI from '../../src/ui'; import shopFixture from '../fixtures/shop-info'; describe('ShopifyBuy.buildClient', () => { const mockClient = {client: true}; let JSBuySDKBuildClientStub; beforeEach(() => { JSBuySDKBuildClientStub = sinon.stub(JSBuySDK, 'buildClient').returns(mockClient); }); afterEach(() => { JSBuySDK.buildClient.restore(); }); it('calls JS Buy SDK buildClient function with additional source config and returns created client', () => { const config = { domain: 'tester.myshopify.com', storefrontAccessToken: 'fake-access-token-4567', }; const client = ShopifyBuy.buildClient(config); const expectedConfig = { domain: config.domain, storefrontAccessToken: config.storefrontAccessToken, source: 'buy-button-js', }; assert.calledOnce(JSBuySDKBuildClientStub); assert.calledWith(JSBuySDKBuildClientStub, expectedConfig); assert.equal(client, mockClient); }); }); describe('ShopifyBuy.UI', () => { const config = { domain: 'embeds.myshopify.com', storefrontAccessToken: 'fake-access-token-12345', }; let client; let ui; beforeEach(() => { client = ShopifyBuy.buildClient(config); sinon.stub(client.shop, 'fetchInfo').returns(Promise.resolve(shopFixture)); ui = ShopifyBuy.UI.init(client); }); afterEach(() => { client = null; ui = null; }); it('returns an instance of UI', () => { assert.isOk(ui instanceof UI); }); it('adds to global namespace', () => { assert.isOk(window.ShopifyBuy.UI); }); });