mirror of
https://github.com/strapi/strapi.git
synced 2025-12-27 23:24:03 +00:00
refacto
Signed-off-by: Pierre Noël <petersg83@gmail.com>
This commit is contained in:
parent
ba8954794b
commit
c9545f2b7d
24
packages/strapi-admin/services/__tests__/metrics.test.js
Normal file
24
packages/strapi-admin/services/__tests__/metrics.test.js
Normal file
@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
const metricsService = require('../metrics');
|
||||
|
||||
describe('Metrics', () => {
|
||||
test('sendDidInviteUser', async () => {
|
||||
const send = jest.fn(() => Promise.resolve());
|
||||
const countUsers = jest.fn(() => Promise.resolve(2));
|
||||
const countRoles = jest.fn(() => Promise.resolve(3));
|
||||
global.strapi = {
|
||||
telemetry: { send },
|
||||
admin: {
|
||||
services: {
|
||||
user: { count: countUsers },
|
||||
role: { count: countRoles },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
await metricsService.sendDidInviteUser();
|
||||
|
||||
expect(send).toHaveBeenCalledWith('didInviteUser', { numberOfRoles: 3, numberOfUsers: 2 });
|
||||
});
|
||||
});
|
||||
@ -27,7 +27,7 @@ describe('User', () => {
|
||||
|
||||
describe('create', () => {
|
||||
const count = jest.fn(() => Promise.resolve(1));
|
||||
const send = jest.fn();
|
||||
const sendDidInviteUser = jest.fn();
|
||||
|
||||
test('Creates a user by merging given and default attributes', async () => {
|
||||
const create = jest.fn(user => Promise.resolve(user));
|
||||
@ -35,12 +35,12 @@ describe('User', () => {
|
||||
const hashPassword = jest.fn(() => Promise.resolve('123456789'));
|
||||
|
||||
global.strapi = {
|
||||
telemetry: { send },
|
||||
admin: {
|
||||
services: {
|
||||
token: { createToken },
|
||||
auth: { hashPassword },
|
||||
role: { count },
|
||||
metrics: { sendDidInviteUser },
|
||||
},
|
||||
},
|
||||
query() {
|
||||
@ -64,12 +64,12 @@ describe('User', () => {
|
||||
const hashPassword = jest.fn(() => Promise.resolve('123456789'));
|
||||
|
||||
global.strapi = {
|
||||
telemetry: { send },
|
||||
admin: {
|
||||
services: {
|
||||
token: { createToken },
|
||||
auth: { hashPassword },
|
||||
role: { count },
|
||||
metrics: { sendDidInviteUser },
|
||||
},
|
||||
},
|
||||
query() {
|
||||
@ -106,12 +106,12 @@ describe('User', () => {
|
||||
const hashPassword = jest.fn(() => Promise.resolve('123456789'));
|
||||
|
||||
global.strapi = {
|
||||
telemetry: { send },
|
||||
admin: {
|
||||
services: {
|
||||
token: { createToken },
|
||||
auth: { hashPassword },
|
||||
role: { count },
|
||||
metrics: { sendDidInviteUser },
|
||||
},
|
||||
},
|
||||
query() {
|
||||
|
||||
11
packages/strapi-admin/services/metrics.js
Normal file
11
packages/strapi-admin/services/metrics.js
Normal file
@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
const sendDidInviteUser = async () => {
|
||||
const numberOfUsers = await strapi.admin.services.user.count();
|
||||
const numberOfRoles = await strapi.admin.services.role.count();
|
||||
return strapi.telemetry.send('didInviteUser', { numberOfRoles, numberOfUsers });
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
sendDidInviteUser,
|
||||
};
|
||||
@ -120,9 +120,9 @@ const exists = async params => {
|
||||
};
|
||||
|
||||
/**
|
||||
* Count the number of users based on params
|
||||
* @param params
|
||||
* @returns {Promise<*>}
|
||||
* Count the number of roles based on search params
|
||||
* @param params params used for the query
|
||||
* @returns {Promise<number>}
|
||||
*/
|
||||
const count = async (params = {}) => {
|
||||
return strapi.query('role', 'admin').count(params);
|
||||
|
||||
@ -24,23 +24,19 @@ const sanitizeUser = user => {
|
||||
* @returns {Promise<user>}
|
||||
*/
|
||||
const create = async attributes => {
|
||||
const user = createUser({
|
||||
const userInfo = {
|
||||
registrationToken: strapi.admin.services.token.createToken(),
|
||||
...attributes,
|
||||
});
|
||||
};
|
||||
|
||||
if (_.has(user, 'password')) {
|
||||
user.password = await strapi.admin.services.auth.hashPassword(user.password);
|
||||
if (_.has(attributes, 'password')) {
|
||||
userInfo.password = await strapi.admin.services.auth.hashPassword(attributes.password);
|
||||
}
|
||||
|
||||
const user = createUser(userInfo);
|
||||
const createdUser = await strapi.query('user', 'admin').create(user);
|
||||
|
||||
if (createdUser) {
|
||||
const numberOfUsers = await count();
|
||||
const numberOfRoles = await strapi.admin.services.role.count();
|
||||
|
||||
await strapi.telemetry.send('didInviteUser', { numberOfRoles, numberOfUsers });
|
||||
}
|
||||
await strapi.admin.services.metrics.sendDidInviteUser();
|
||||
|
||||
return createdUser;
|
||||
};
|
||||
@ -241,12 +237,12 @@ const countUsersWithoutRole = async () => {
|
||||
};
|
||||
|
||||
/**
|
||||
* Count number of users based on attributes
|
||||
* @param attributes the filters used to filter the search
|
||||
* Count the number of users based on search params
|
||||
* @param params params used for the query
|
||||
* @returns {Promise<number>}
|
||||
*/
|
||||
const count = async (attributes = {}) => {
|
||||
return strapi.query('user', 'admin').count(attributes);
|
||||
const count = async (params = {}) => {
|
||||
return strapi.query('user', 'admin').count(params);
|
||||
};
|
||||
|
||||
/** Assign some roles to several users
|
||||
|
||||
@ -59,6 +59,15 @@ describe('metrics', () => {
|
||||
send('someEvent');
|
||||
|
||||
expect(fetch).toHaveBeenCalled();
|
||||
expect(fetch.mock.calls[0][0]).toBe('https://analytics.strapi.io/track');
|
||||
expect(fetch.mock.calls[0][1].method).toBe('POST');
|
||||
expect(JSON.parse(fetch.mock.calls[0][1].body)).toMatchObject({
|
||||
event: 'someEvent',
|
||||
uuid: 'test',
|
||||
properties: {
|
||||
projectType: 'Community',
|
||||
},
|
||||
});
|
||||
fetch.mockClear();
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user