UNPKG

meetup-web-mocks

Version:
303 lines (273 loc) 8.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateMockVariantMeta = exports.generateMockStateAndMeta = exports.generateMockState = exports.mockValue = exports.MOCK_ROUTES = exports.MOCK_VALID_CONFIG = exports.MOCK_REQUEST_COOKIES = exports.MOCK_COOKIE_HEADER = exports.MOCK_RENDER_RESULT = exports.MOCK_DELETE_ACTION = exports.MOCK_POST_ACTION = exports.MOCK_LOGIN_RESPONSE = exports.MOCK_CREDENTIALS = exports.MOCK_DATETIME = exports.MOCK_AUTH_HEADER = exports.mockQueryBadType = exports.mockQuery = exports.MOCK_MEANINGLESS_ACTION = exports.MOCK_RENDERPROPS_UTF8 = exports.MOCK_RENDERPROPS = exports.MOCK_OAUTH_COOKIES = exports.MOCK_FETCH_API_RESPONSE = exports.MOCK_API_RESULT = exports.MOCK_API_PROBLEM = exports.MOCK_APP_STATE = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _api = require('./api'); var _app = require('./group/communication/app'); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var api = _extends(_defineProperty({ self: { type: 'member', value: { id: 1234, status: 'prereg' } }, group: { type: 'group', value: _api.MOCK_GROUP }, events: { type: 'event', value: [_extends({}, _api.MOCK_EVENT, { id: '3456' }), _extends({}, _api.MOCK_EVENT, { id: '4567' })] }, event: { type: 'event', value: _api.MOCK_EVENT } }, 'event_' + _api.MOCK_SHALLOW_GROUP.urlname + '_' + _api.MOCK_SHALLOW_EVENT.id, { type: 'event', value: _api.MOCK_SHALLOW_EVENT }), _app.MOCK_COMM_APP_STATE); var MOCK_APP_STATE = exports.MOCK_APP_STATE = { app: api, api: api, config: { apiUrl: 'http://fake.api.meetup.com', csrf: '1234_fake_csrf', requestLanguage: 'en-US', baseUrl: 'https://beta2.dev.meetup.com:8000' }, routing: { locationBeforeTransitions: { pathname: '/foo' } }, toasts: { ready: [] } }; var MOCK_API_PROBLEM = exports.MOCK_API_PROBLEM = { problem: 'There was an internal problem in the API' }; var MOCK_API_RESULT = exports.MOCK_API_RESULT = [{ ref: 'group', type: 'group', value: MOCK_APP_STATE.app.group.value }]; var MOCK_FETCH_API_RESPONSE = exports.MOCK_FETCH_API_RESPONSE = { queries: [], responses: [] }; var MOCK_OAUTH_COOKIES = exports.MOCK_OAUTH_COOKIES = { oauth_token: '1234', refresh_token: 'asdf', anonymous: true }; var MOCK_RENDERPROPS = exports.MOCK_RENDERPROPS = { location: { // https://github.com/reactjs/history/blob/master/docs/Location.md pathname: '/foo', search: '?foo', state: {}, action: 'PUSH', key: '1234', query: { foo: null } }, params: { urlname: 'foo' } }; var MOCK_RENDERPROPS_UTF8 = exports.MOCK_RENDERPROPS_UTF8 = { location: { // https://github.com/reactjs/history/blob/master/docs/Location.md pathname: '/バ-京', search: '', state: {}, action: 'PUSH', key: '1234' }, params: { urlname: 'バ-京' } }; var MOCK_MEANINGLESS_ACTION = exports.MOCK_MEANINGLESS_ACTION = { type: 'ARBITRARY', payload: '/' }; var mockQuery = exports.mockQuery = function mockQuery(_ref) { var location = _ref.location, params = _ref.params, apiMetaHeaders = _ref.apiMetaHeaders; var meta = {}; if (apiMetaHeaders) { meta.apiMetaHeaders = apiMetaHeaders; } return { type: 'group', endpoint: (params || {}).urlname || 'foo', params: params, meta: meta, ref: 'group' }; }; var mockQueryBadType = exports.mockQueryBadType = function mockQueryBadType(_ref2) { var location = _ref2.location, params = _ref2.params; var type = 'lkajlhsdhljaskliub'; return _extends({}, mockQuery({ location: location, params: params }), { type: type }); }; var MOCK_AUTH_HEADER = exports.MOCK_AUTH_HEADER = 'Bearer ' + MOCK_OAUTH_COOKIES + '.oauth_token'; var MOCK_DATETIME = exports.MOCK_DATETIME = new Date().getTime(); var MOCK_CREDENTIALS = exports.MOCK_CREDENTIALS = { username: 'Michael McGahan', pw: 'whatever' }; var MOCK_LOGIN_RESPONSE = exports.MOCK_LOGIN_RESPONSE = { value: { member: {}, oauth_token: 1234 } }; var MOCK_POST_ACTION = exports.MOCK_POST_ACTION = { type: 'POST_DUMMY', payload: { query: { endpoint: 'mypost', ref: 'postiepost', type: 'mcposterson' }, onSuccess: function onSuccess(payload) { return { type: 'MOCK_SUCCESS', payload: payload }; }, onError: function onError(err) { return { type: 'MOCK_ERROR', payload: err, error: true }; } } }; var MOCK_DELETE_ACTION = exports.MOCK_DELETE_ACTION = { type: 'DELETE_DUMMY', payload: { query: { endpoint: 'mydelete', ref: 'deleted', type: 'dellllleeeeted' }, onSuccess: function onSuccess(payload) { return { type: 'MOCK_SUCCESS', payload: payload }; }, onError: function onError(err) { return { type: 'MOCK_ERROR', payload: err, error: true }; } } }; // Arbitrary string response payload from server render var MOCK_RENDER_RESULT = exports.MOCK_RENDER_RESULT = '<html><body><h1>Hello world</h1></body></html>'; // string 'Cookie:' header from MOCK_OAUTH_COOKIES var MOCK_COOKIE_HEADER = exports.MOCK_COOKIE_HEADER = Object.keys(MOCK_OAUTH_COOKIES).reduce(function (acc, key) { return acc += key + '=' + JSON.stringify(MOCK_OAUTH_COOKIES[key]) + '; '; }, ''); var MOCK_REQUEST_COOKIES = exports.MOCK_REQUEST_COOKIES = { url: '/', headers: { cookie: MOCK_COOKIE_HEADER } }; var mock_valid_config = { DEV_SERVER_PORT: 8000, API_PROTOCOL: 'https', API_HOST: 'api.dev.meetup.com', OAUTH_AUTH_URL: 'https://secure.dev.meetup.com/oauth2/authorize', OAUTH_ACCESS_URL: 'https://secure.dev.meetup.com/oauth2/access', PHOTO_SCALER_SALT: 'abcdefg', AUTH_ENDPOINT: '/auth', oauth: { secret: process.env.MUPWEB_OAUTH_SECRET, key: process.env.MUPWEB_OAUTH_KEY } }; mock_valid_config.API_SERVER_ROOT_URL = mock_valid_config.API_PROTOCOL + '://' + mock_valid_config.API_HOST; var MOCK_VALID_CONFIG = exports.MOCK_VALID_CONFIG = mock_valid_config; var MOCK_ROUTES = exports.MOCK_ROUTES = [{ path: '/noQuery', component: function component() {} }, { path: '/', component: function component() {}, query: function query() { return mockQuery({}); }, childRoutes: [{ path: 'foo', component: function component() {}, query: function query() { return mockQuery({}); } }, { path: 'nullQuery', component: function component() {}, query: function query() { return null; } }] }]; // default value object used in mock state object var mockValue = exports.mockValue = { id: '🦄' }; /** * Useful function when generating fake state objects * @param {String} ref Reference to use in object creation * @param {Object} value value to use in object creation * @return {Object} mock object */ var generateMockState = exports.generateMockState = function generateMockState(ref) { var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : mockValue; return { config: {}, api: _extends({}, MOCK_APP_STATE.api, _defineProperty({}, ref, { ref: ref, value: value, meta: { statusCode: 204, flags: { some_flag: true } } })) }; }; /** * Useful function when generating fake state objects with a custom meta object. * @param {String} ref Reference to use in object creation * @param {Object} value value to use in object creation * @param {Object} meta meta values to use in object creation * @return {Object} mock object */ var generateMockStateAndMeta = exports.generateMockStateAndMeta = function generateMockStateAndMeta(ref) { var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : mockValue; var meta = arguments[2]; return { config: {}, api: _extends({}, MOCK_APP_STATE.api, _defineProperty({}, ref, { ref: ref, value: value, meta: meta })) }; }; /** * Useful testing util when testing selectors to determine if variants * object will be returned for the specified ref * @param {String} ref Reference to use in object creation * @param {Object} variants * @param {Object} value additional api value on the response * @return {Object} mock object */ var generateMockVariantMeta = exports.generateMockVariantMeta = function generateMockVariantMeta(ref, variants, value) { var mockState = generateMockState(); return { api: _extends({}, mockState.api, _defineProperty({}, ref, { value: value, meta: { variants: variants } })) }; };