forest-express
Advanced tools
Comparing version 10.0.0-beta.3 to 10.0.0-beta.4
@@ -146,12 +146,50 @@ "use strict"; | ||
this.getWithLiveQuery = function (request, response, next) { | ||
return new Implementation.QueryStatGetter(request.body, opts).perform().then(function (result) { | ||
switch (request.body.type) { | ||
case CHART_TYPE_VALUE: | ||
if (result.length) { | ||
var resultLine = result[0]; | ||
this.getWithLiveQuery = /*#__PURE__*/function () { | ||
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(request, response, next) { | ||
var _yield$chartHandler$g, query, contextVariables, result, resultLine, _resultLine, data; | ||
if (resultLine.value === undefined) { | ||
return _regenerator["default"].wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
_context2.prev = 0; | ||
_context2.next = 3; | ||
return chartHandler.getQueryForChart({ | ||
userId: request.user.id, | ||
renderingId: request.user.renderingId, | ||
chartRequest: request.body | ||
}); | ||
case 3: | ||
_yield$chartHandler$g = _context2.sent; | ||
query = _yield$chartHandler$g.query; | ||
contextVariables = _yield$chartHandler$g.contextVariables; | ||
_context2.next = 8; | ||
return new Implementation.QueryStatGetter(_objectSpread(_objectSpread({}, request.body), {}, { | ||
query: query, | ||
contextVariables: _objectSpread(_objectSpread({}, request.body.contextVariables || {}), contextVariables) | ||
}), opts).perform(); | ||
case 8: | ||
result = _context2.sent; | ||
_context2.t0 = request.body.type; | ||
_context2.next = _context2.t0 === CHART_TYPE_VALUE ? 12 : _context2.t0 === CHART_TYPE_PIE ? 20 : _context2.t0 === CHART_TYPE_LEADERBOARD ? 20 : _context2.t0 === CHART_TYPE_LINE ? 22 : _context2.t0 === CHART_TYPE_OBJECTIVE ? 25 : 33; | ||
break; | ||
case 12: | ||
if (!result.length) { | ||
_context2.next = 19; | ||
break; | ||
} | ||
resultLine = result[0]; | ||
if (!(resultLine.value === undefined)) { | ||
_context2.next = 18; | ||
break; | ||
} | ||
throw getErrorQueryColumnsName(resultLine, '\'value\''); | ||
} else { | ||
case 18: | ||
result = { | ||
@@ -161,45 +199,52 @@ countCurrent: resultLine.value, | ||
}; | ||
} | ||
} | ||
break; | ||
case 19: | ||
return _context2.abrupt("break", 34); | ||
case CHART_TYPE_PIE: | ||
case CHART_TYPE_LEADERBOARD: | ||
if (result.length) { | ||
result.forEach(function (resultLine) { | ||
if (resultLine.value === undefined || resultLine.key === undefined) { | ||
throw getErrorQueryColumnsName(resultLine, '\'key\', \'value\''); | ||
case 20: | ||
if (result.length) { | ||
result.forEach(function (resultLine) { | ||
if (resultLine.value === undefined || resultLine.key === undefined) { | ||
throw getErrorQueryColumnsName(resultLine, '\'key\', \'value\''); | ||
} | ||
}); | ||
} | ||
}); | ||
} | ||
break; | ||
return _context2.abrupt("break", 34); | ||
case CHART_TYPE_LINE: | ||
if (result.length) { | ||
result.forEach(function (resultLine) { | ||
if (resultLine.value === undefined || resultLine.key === undefined) { | ||
throw getErrorQueryColumnsName(resultLine, '\'key\', \'value\''); | ||
case 22: | ||
if (result.length) { | ||
result.forEach(function (resultLine) { | ||
if (resultLine.value === undefined || resultLine.key === undefined) { | ||
throw getErrorQueryColumnsName(resultLine, '\'key\', \'value\''); | ||
} | ||
}); | ||
} | ||
}); | ||
} | ||
result = result.map(function (resultLine) { | ||
return { | ||
label: resultLine.key, | ||
values: { | ||
value: resultLine.value | ||
result = result.map(function (resultLine) { | ||
return { | ||
label: resultLine.key, | ||
values: { | ||
value: resultLine.value | ||
} | ||
}; | ||
}); | ||
return _context2.abrupt("break", 34); | ||
case 25: | ||
if (!result.length) { | ||
_context2.next = 32; | ||
break; | ||
} | ||
}; | ||
}); | ||
break; | ||
case CHART_TYPE_OBJECTIVE: | ||
if (result.length) { | ||
var _resultLine = result[0]; | ||
_resultLine = result[0]; | ||
if (_resultLine.value === undefined || _resultLine.objective === undefined) { | ||
if (!(_resultLine.value === undefined || _resultLine.objective === undefined)) { | ||
_context2.next = 31; | ||
break; | ||
} | ||
throw getErrorQueryColumnsName(_resultLine, '\'value\', \'objective\''); | ||
} else { | ||
case 31: | ||
result = { | ||
@@ -209,19 +254,35 @@ objective: _resultLine.objective, | ||
}; | ||
} | ||
} | ||
break; | ||
case 32: | ||
return _context2.abrupt("break", 34); | ||
default: | ||
throw new Error('Unknown Chart type'); | ||
} | ||
case 33: | ||
throw new Error('Unknown Chart type'); | ||
return new StatSerializer({ | ||
value: result | ||
}).perform(); | ||
}).then(function (data) { | ||
response.send(data); | ||
})["catch"](next); | ||
}; | ||
case 34: | ||
data = new StatSerializer({ | ||
value: result | ||
}).perform(); | ||
response.send(data); | ||
_context2.next = 41; | ||
break; | ||
case 38: | ||
_context2.prev = 38; | ||
_context2.t1 = _context2["catch"](0); | ||
next(_context2.t1); | ||
case 41: | ||
case "end": | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, null, [[0, 38]]); | ||
})); | ||
return function (_x4, _x5, _x6) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
}(); | ||
this.perform = function () { | ||
@@ -228,0 +289,0 @@ app.post(path.generate("stats/".concat(modelName), opts), auth.ensureAuthenticated, permissionMiddlewareCreator.stats(), _this.get); |
{ | ||
"name": "forest-express", | ||
"description": "Official package for all Forest Express Lianas", | ||
"version": "10.0.0-beta.3", | ||
"version": "10.0.0-beta.4", | ||
"author": "Sandro Munda <sandro@munda.me>", | ||
@@ -31,3 +31,3 @@ "contributors": [ | ||
"@forestadmin/context": "1.31.0", | ||
"@forestadmin/forestadmin-client": "1.0.0-alpha.3", | ||
"@forestadmin/forestadmin-client": "1.0.0", | ||
"base32-encode": "1.1.1", | ||
@@ -34,0 +34,0 @@ "bitwise-xor": "0.0.0", |
@@ -6,2 +6,3 @@ const { init } = require('@forestadmin/context'); | ||
getChartWithContextInjected: jest.fn(), | ||
getQueryForChart: jest.fn(), | ||
}; | ||
@@ -58,2 +59,63 @@ init((context) => context.addInstance('chartHandler', chartHandler)); | ||
}); | ||
describe('.getWithLiveQuery', () => { | ||
it('should return a value for objective chart', async () => { | ||
const app = {}; | ||
const model = { name: 'book' }; | ||
const performMock = jest.fn().mockResolvedValue(([{ value: 5, objective: 10 }])); | ||
const FakeQueryStatGetter = jest.fn().mockImplementation(() => ({ perform: performMock })); | ||
const Implementation = { | ||
getModelName: jest.fn(() => 'books'), | ||
QueryStatGetter: FakeQueryStatGetter, | ||
}; | ||
const chart = { query: 'SELECT something as value', contextVariables: { power: 'fly' } }; | ||
chartHandler.getQueryForChart.mockResolvedValue(chart); | ||
const next = jest.fn(); | ||
const req = { | ||
params: { recordId: '1' }, | ||
query: { timezone: 'Europe/Paris' }, | ||
user: { renderingId: 1, id: 10 }, | ||
body: { type: 'Objective', contextVariables: { test: 'me', power: 'fake' } }, | ||
}; | ||
const res = { | ||
send: jest.fn(), | ||
}; | ||
const expectedParams = { | ||
type: 'Objective', | ||
...chart, | ||
contextVariables: { | ||
...req.body.contextVariables, | ||
...chart.contextVariables, | ||
}, | ||
}; | ||
const subject = new Stats(app, model, Implementation); | ||
await subject.getWithLiveQuery(req, res, next); | ||
expect(chartHandler.getQueryForChart).toHaveBeenCalledOnceWith({ | ||
userId: 10, | ||
renderingId: 1, | ||
chartRequest: req.body, | ||
}); | ||
expect(FakeQueryStatGetter).toHaveBeenCalledOnceWith(expectedParams, {}); | ||
expect(performMock).toHaveBeenCalledOnceWith(); | ||
expect(res.send).toHaveBeenCalledOnceWith({ | ||
data: { | ||
id: expect.toBeString(), | ||
type: 'stats', | ||
attributes: { | ||
value: { | ||
value: 5, | ||
objective: 10, | ||
}, | ||
}, | ||
}, | ||
}); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
822206
16126
+ Added@forestadmin/forestadmin-client@1.0.0(transitive)
- Removed@forestadmin/forestadmin-client@1.0.0-alpha.3(transitive)