@zendesk/zcli-themes
Version:
zcli theme commands live here
55 lines (54 loc) • 2.08 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sinon = require("sinon");
const test_1 = require("@oclif/test");
const zcli_core_1 = require("@zendesk/zcli-core");
const createThemeUpdateJob_1 = require("./createThemeUpdateJob");
const chalk = require("chalk");
const errors = require("@oclif/core/lib/errors");
describe('createThemeUpdateJob', () => {
beforeEach(() => {
sinon.restore();
});
it('calls the jobs/themes/updates endpoint with the correct payload and returns the job', async () => {
const requestStub = sinon.stub(zcli_core_1.request, 'requestAPI');
const job = {
id: '9999',
status: 'pending',
data: {}
};
requestStub.returns(Promise.resolve({ data: { job } }));
(0, test_1.expect)(await (0, createThemeUpdateJob_1.default)('1234', true)).to.equal(job);
(0, test_1.expect)(requestStub.calledWith('/api/v2/guide/theming/jobs/themes/updates', sinon.match({
method: 'POST',
data: {
job: {
attributes: {
theme_id: '1234',
replace_settings: true,
format: 'zip'
}
}
}
}))).to.equal(true);
});
it('errors when creation fails', async () => {
const errorStub = sinon.stub(errors, 'error').callThrough();
sinon.stub(zcli_core_1.request, 'requestAPI').throws({
response: {
data: {
errors: [{
code: 'TooManyThemes',
title: 'Maximum number of allowed themes reached'
}]
}
}
});
try {
await (0, createThemeUpdateJob_1.default)('1234', false);
}
catch (_a) {
(0, test_1.expect)(errorStub.calledWith(`${chalk.bold('TooManyThemes')} - Maximum number of allowed themes reached`)).to.equal(true);
}
});
});