96 lines
2.7 KiB
JavaScript
96 lines
2.7 KiB
JavaScript
var _ = require('../util').lodash,
|
|
Property = require('./property').Property,
|
|
Script = require('./script').Script,
|
|
|
|
Event;
|
|
|
|
/**
|
|
* @typedef Event.definition
|
|
* @property {String} listen The event-name that this script will be called for. Usually either "test" or "prerequest"
|
|
* @property {Script|String} script A {@link Script} instance that will be executed on this event. In case of a
|
|
* string, a new {@link Script} is created.
|
|
* @example <caption>Constructing an event</caption>
|
|
* var Event = require('postman-collection').Event,
|
|
* rawEvent = {
|
|
* listen: 'test',
|
|
* script: 'tests["response code is 401"] = responseCode.code === 401'
|
|
* },
|
|
* myEvent;
|
|
* myEvent = new Event(rawEvent);
|
|
*/
|
|
_.inherit((
|
|
|
|
/**
|
|
* A Postman event definition that refers to an event to be listened to and a script reference or definition to be
|
|
* executed.
|
|
*
|
|
* @constructor
|
|
* @extends {Property}
|
|
*
|
|
* @param {Event.definition} definition Pass the initial definition of the event as the options parameter.
|
|
*/
|
|
Event = function PostmanEvent (definition) {
|
|
// this constructor is intended to inherit and as such the super constructor is required to be executed
|
|
Event.super_.call(this, definition);
|
|
// set initial values of this event
|
|
definition && this.update(definition);
|
|
}), Property);
|
|
|
|
_.assign(Event.prototype, /** @lends Event.prototype */ {
|
|
/**
|
|
* Update an event.
|
|
*
|
|
* @param {Event.definition} definition -
|
|
*/
|
|
update (definition) {
|
|
if (!definition) {
|
|
return;
|
|
}
|
|
|
|
var result,
|
|
script = definition.script;
|
|
|
|
if (Script.isScript(script)) {
|
|
result = script;
|
|
}
|
|
else if (_.isArray(script) || _.isString(script)) {
|
|
result = new Script({ exec: script });
|
|
}
|
|
else if (_.isObject(script)) {
|
|
result = new Script(script);
|
|
}
|
|
|
|
_.mergeDefined(this, /** @lends Event.prototype */ {
|
|
/**
|
|
* Name of the event that this instance is intended to listen to.
|
|
*
|
|
* @type {String}
|
|
*/
|
|
listen: _.isString(definition.listen) ? definition.listen.toLowerCase() : undefined,
|
|
|
|
/**
|
|
* The script that is to be executed when this event is triggered.
|
|
*
|
|
* @type {Script}
|
|
*/
|
|
script: result
|
|
});
|
|
}
|
|
});
|
|
|
|
_.assign(Event, /** @lends Event */ {
|
|
|
|
/**
|
|
* Defines the name of this property for internal use.
|
|
*
|
|
* @private
|
|
* @readOnly
|
|
* @type {String}
|
|
*/
|
|
_postman_propertyName: 'Event'
|
|
});
|
|
|
|
module.exports = {
|
|
Event
|
|
};
|