UNPKG

@botonic/plugin-contentful

Version:

Botonic Plugin Contentful is one of the **[available](https://github.com/hubtype/botonic/tree/master/packages)** plugins for Botonic. **[Contentful](http://www.contentful.com)** is a CMS (Content Management System) which manages contents of a great variet

141 lines 6.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DummyCMS = void 0; const tslib_1 = require("tslib"); const search_result_1 = require("../search/search-result"); const time = tslib_1.__importStar(require("../time")); const cms_1 = require("./cms"); const contents_1 = require("./contents"); const context_1 = require("./context"); /** * Useful for mocking CMS, as ts-mockito does not allow mocking interfaces */ class DummyCMS { /** * * @param buttonCallbacks models which contain buttons will return one per each specified callback */ constructor(buttonCallbacks) { this.buttonCallbacks = buttonCallbacks; } button(_id, _context) { throw new Error('Method not implemented.'); } element(_id, _context) { throw new Error('Method not implemented.'); } carousel(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const elements = this.buttonCallbacks.map((callback, i) => this.createElement(String(i), callback)); return Promise.resolve(new contents_1.Carousel(new contents_1.CommonFields(id, id), elements)); }); } document(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(new contents_1.Document(new contents_1.CommonFields(id, id), DummyCMS.PDF)); }); } text(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(new contents_1.Text(new contents_1.CommonFields(id, id, { keywords: ['kw1', 'kw2'], shortText: id }), 'Dummy text for ' + id, this.buttons())); }); } handoff(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const queue = new contents_1.Queue(new contents_1.CommonFields(id, id), id); const message = new contents_1.Text(new contents_1.CommonFields(id, id), id, []); const failMessage = new contents_1.Text(new contents_1.CommonFields(id, id), id, []); return Promise.resolve(new contents_1.Handoff(new contents_1.CommonFields(id, id), this.buttonCallbacks[0], message, failMessage, queue)); }); } input(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(new contents_1.Input(new contents_1.CommonFields(id, id), 'Dummy message', [], this.buttonCallbacks[0])); }); } custom(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(new contents_1.Custom(id, id, {})); }); } chitchat(id, context = context_1.DEFAULT_CONTEXT) { return this.text(id, context); } startUp(id, {} = context_1.DEFAULT_CONTEXT) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(new contents_1.StartUp(new contents_1.CommonFields(id, id), DummyCMS.IMG, 'Dummy text for ' + id, this.buttons())); }); } static buttonFromCallback(callback) { const id = callback.payload || callback.url; return new contents_1.Button(id, id, 'button text for ' + id, callback); } createElement(id, callback) { return new contents_1.Element(id, [DummyCMS.buttonFromCallback(callback)], 'Title for ' + id, 'subtitle', DummyCMS.IMG); } url(id, {} = context_1.DEFAULT_CONTEXT) { return Promise.resolve(new contents_1.Url(new contents_1.CommonFields(id, id, { shortText: 'button text for' + id }), `http://url.${id}`)); } payload(id, {} = context_1.DEFAULT_CONTEXT) { return Promise.resolve(new contents_1.Payload(new contents_1.CommonFields(id, id), 'Dummy payload for ' + id)); } image(id, {} = context_1.DEFAULT_CONTEXT) { return Promise.resolve(new contents_1.Image(new contents_1.CommonFields(id, id), DummyCMS.IMG)); } video(id, {} = context_1.DEFAULT_CONTEXT) { return Promise.resolve(new contents_1.Video(new contents_1.CommonFields(id, id), DummyCMS.VIDEO)); } queue(id, {} = context_1.DEFAULT_CONTEXT) { return Promise.resolve(new contents_1.Queue(new contents_1.CommonFields(id, id), id)); } topContents(_model, _context, _filter, _paging) { return Promise.resolve([]); } contentsWithKeywords({} = context_1.DEFAULT_CONTEXT, _paging) { const contents = this.buttonCallbacks.map((cb, id) => { const button = DummyCMS.buttonFromCallback(cb); // eslint-disable-next-line @typescript-eslint/no-unused-vars return new search_result_1.SearchCandidate(cb.asContentId(), new contents_1.CommonFields(String(id), button.name, { shortText: button.text, keywords: [ 'keyword for ' + (button.callback.payload || button.callback.url), ], })); }); return Promise.resolve(contents); } schedule(id, _context) { const schedule = new time.Schedule('Europe/Madrid'); return Promise.resolve(new contents_1.ScheduleContent(new contents_1.CommonFields(id, 'name'), schedule)); } asset(id, _context) { return Promise.resolve(new contents_1.Asset(id, `http://url.${id}`, { name: `${id} title`, fileName: `${id} fileName`, description: `${id} description`, type: `${id} type`, })); } dateRange(id, _context) { const now = new Date(); const dateRange = new time.DateRange('daterange name', now, now); return Promise.resolve(new contents_1.DateRangeContent(new contents_1.CommonFields(id, dateRange.name), dateRange)); } buttons() { return this.buttonCallbacks.map(DummyCMS.buttonFromCallback); } content(id, context = context_1.DEFAULT_CONTEXT, _referencesToInclude = cms_1.DEFAULT_REFERENCES_TO_INCLUDE) { return this.text(id, context); } contents(_contentType, _context, _paging) { return Promise.resolve([]); } assets(_context) { return Promise.resolve([]); } } exports.DummyCMS = DummyCMS; DummyCMS.IMG = 'this_image_does_not_exist.png'; DummyCMS.VIDEO = 'this_video_does_not_exist.mp4'; DummyCMS.PDF = 'this_doc_does_not_exist.pdf'; //# sourceMappingURL=cms-dummy.js.map