@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
JavaScript
;
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