4797-lilium-worker-notifications #1229

Merged
pau merged 37 commits from 4797-lilium-worker-notifications into dev 2023-02-02 08:53:29 +00:00
4 changed files with 79 additions and 14 deletions
Showing only changes of commit c13bffcc57 - Show all commits

View File

@ -1,22 +1,74 @@
const app = require('vn-loopback/server/server');
const models = require('vn-loopback/server/server').models;
pau marked this conversation as resolved Outdated
Outdated
Review

const models = require('vn-loopback/server/server').models;

const models = require('vn-loopback/server/server').models;
describe('loopback model NotificationSubscription', () => {
it('Should fail to delete a notification if the user is not editing itself or a subordinate', async() => {
pau marked this conversation as resolved
Review

Poner un caso en el que te deje si eres tu mismo y otro que te deje si es tu jefe, te hará falta transaccionar la ruta para poder deshacer el delete

Poner un caso en el que te deje si eres tu mismo y otro que te deje si es tu jefe, te hará falta transaccionar la ruta para poder deshacer el delete
const tx = await models.NotificationSubscription.beginTransaction({});
try {
const options = {transaction: tx};
const user = 9;
const notificationSubscriptionId = 2;
const ctx = {req: {accessToken: {userId: user}}};
const models = app.models;
const notification = await models.NotificationSubscription.findById(notificationSubscriptionId);
let error;
try {
await models.NotificationSubscription.deleteNotification(ctx, notification.id);
await models.NotificationSubscription.deleteNotification(ctx, notification.id, options);
} catch (e) {
error = e;
}
expect(error.message).toContain('You dont have permission to modify this user');
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
it('Should delete a notification if the user is editing itself', async() => {
const tx = await models.NotificationSubscription.beginTransaction({});
try {
const options = {transaction: tx};
const user = 9;
const notificationSubscriptionId = 5;
const ctx = {req: {accessToken: {userId: user}}};
const notification = await models.NotificationSubscription.findById(notificationSubscriptionId);
await models.NotificationSubscription.deleteNotification(ctx, notification.id, options);
const deletedNotification = await models.NotificationSubscription.findById(notificationSubscriptionId);
expect(deletedNotification).toBeNull();
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
it('Should delete a notification if the user is editing a subordinate', async() => {
const tx = await models.NotificationSubscription.beginTransaction({});
try {
const options = {transaction: tx};
const user = 9;
const notificationSubscriptionId = 6;
const ctx = {req: {accessToken: {userId: user}}};
const notification = await models.NotificationSubscription.findById(notificationSubscriptionId);
await models.NotificationSubscription.deleteNotification(ctx, notification.id, options);
const deletedNotification = await models.NotificationSubscription.findById(notificationSubscriptionId);
expect(deletedNotification).toBeNull();
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
});

View File

@ -0,0 +1,10 @@
CREATE OR REPLACE TABLE `util`.`notificationSubscription` (
pau marked this conversation as resolved Outdated
Outdated
Review

Has contemplat que se borren tots els registres de la taula?

Has contemplat que se borren tots els registres de la taula?
`id` int(11) NOT NULL AUTO_INCREMENT,
pau marked this conversation as resolved Outdated
Outdated
Review

id

**id**
`notificationFk` int(11) NOT NULL,
`userFk` int(10) unsigned NOT NULL,
pau marked this conversation as resolved Outdated
Outdated
Review

id

**id**
PRIMARY KEY (`id`),
pau marked this conversation as resolved Outdated
Outdated
Review

Posali una UNIQUE_KEY pq al llevar PRIMARY KEY (notificationFk,userFk), el mateix usuari pot estar dos vegades en la matiexa notificació i no deuria

Posali una UNIQUE_KEY pq al llevar *PRIMARY KEY (`notificationFk`,`userFk`)*, el mateix usuari pot estar dos vegades en la matiexa notificació i no deuria
KEY `notificationSubscription_ibfk_1` (`notificationFk`),
KEY `notificationSubscription_ibfk_2` (`userFk`),
CONSTRAINT `notificationSubscription_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `notification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `notificationSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -2701,7 +2701,10 @@ INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`)
VALUES
(1, 1109),
(1, 1110),
(3, 1109);
(3, 1109),
(1,9),
(1,3);
INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`)
VALUES