chore: added new testcases for updateUserCollection method in user-collection module
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
|||||||
USER_COLL_SHORT_TITLE,
|
USER_COLL_SHORT_TITLE,
|
||||||
USER_COLL_ALREADY_ROOT,
|
USER_COLL_ALREADY_ROOT,
|
||||||
USER_NOT_OWNER,
|
USER_NOT_OWNER,
|
||||||
|
USER_COLL_DATA_INVALID,
|
||||||
} from 'src/errors';
|
} from 'src/errors';
|
||||||
import { PrismaService } from 'src/prisma/prisma.service';
|
import { PrismaService } from 'src/prisma/prisma.service';
|
||||||
import { PubSubService } from 'src/pubsub/pubsub.service';
|
import { PubSubService } from 'src/pubsub/pubsub.service';
|
||||||
@@ -1728,3 +1729,107 @@ describe('updateUserCollectionOrder', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('updateUserCollection', () => {
|
||||||
|
test('should throw USER_COLL_DATA_INVALID is collection data is invalid', async () => {
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
rootRESTUserCollection.title,
|
||||||
|
'{',
|
||||||
|
rootRESTUserCollection.id,
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
expect(result).toEqualLeft(USER_COLL_DATA_INVALID);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should throw USER_COLL_SHORT_TITLE if title is invalid', async () => {
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
'',
|
||||||
|
JSON.stringify(rootRESTUserCollection.data),
|
||||||
|
rootRESTUserCollection.id,
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqualLeft(USER_COLL_SHORT_TITLE);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should throw USER_NOT_OWNER is user is not owner of collection', async () => {
|
||||||
|
// isOwnerCheck
|
||||||
|
mockPrisma.userCollection.findFirstOrThrow.mockRejectedValueOnce(
|
||||||
|
'NotFoundError',
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
rootRESTUserCollection.title,
|
||||||
|
JSON.stringify(rootRESTUserCollection.data),
|
||||||
|
rootRESTUserCollection.id,
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqualLeft(USER_NOT_OWNER);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should throw USER_COLL_NOT_FOUND is collectionID is invalid', async () => {
|
||||||
|
// isOwnerCheck
|
||||||
|
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce({
|
||||||
|
...rootRESTUserCollection,
|
||||||
|
});
|
||||||
|
mockPrisma.userCollection.update.mockRejectedValueOnce('RecordNotFound');
|
||||||
|
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
rootRESTUserCollection.title,
|
||||||
|
JSON.stringify(rootRESTUserCollection.data),
|
||||||
|
'invalid_id',
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
expect(result).toEqualLeft(USER_COLL_NOT_FOUND);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should successfully update a collection', async () => {
|
||||||
|
// isOwnerCheck
|
||||||
|
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce({
|
||||||
|
...rootRESTUserCollection,
|
||||||
|
});
|
||||||
|
mockPrisma.userCollection.update.mockResolvedValueOnce(
|
||||||
|
rootRESTUserCollection,
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
'new_title',
|
||||||
|
JSON.stringify({ foo: 'bar' }),
|
||||||
|
rootRESTUserCollection.id,
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqualRight({
|
||||||
|
data: JSON.stringify({ foo: 'bar' }),
|
||||||
|
title: 'new_title',
|
||||||
|
...rootRESTUserCollectionCasted,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should send pubsub message to "user_coll/<userID>/updated" when UserCollection is updated successfully', async () => {
|
||||||
|
// isOwnerCheck
|
||||||
|
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce({
|
||||||
|
...rootRESTUserCollection,
|
||||||
|
});
|
||||||
|
mockPrisma.userCollection.update.mockResolvedValueOnce(
|
||||||
|
rootRESTUserCollection,
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await userCollectionService.updateUserCollection(
|
||||||
|
'new_title',
|
||||||
|
JSON.stringify({ foo: 'bar' }),
|
||||||
|
rootRESTUserCollection.id,
|
||||||
|
rootRESTUserCollection.userUid,
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||||
|
`user_coll/${rootRESTUserCollectionCasted.userID}/updated`,
|
||||||
|
{
|
||||||
|
data: JSON.stringify({ foo: 'bar' }),
|
||||||
|
title: 'new_title',
|
||||||
|
...rootRESTUserCollectionCasted,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user