chore: refactored all existing testcases in user-collection to reflect new changes
This commit is contained in:
@@ -1016,8 +1016,10 @@ export class TeamCollectionService {
|
||||
newTitle: string = null,
|
||||
) {
|
||||
try {
|
||||
if (newTitle != null) {
|
||||
const isTitleValid = isValidLength(newTitle, this.TITLE_LENGTH);
|
||||
if (!isTitleValid) return E.left(TEAM_COLL_SHORT_TITLE);
|
||||
}
|
||||
|
||||
if (collectionData) {
|
||||
const jsonReq = stringToJson(collectionData);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { UserCollection } from '@prisma/client';
|
||||
import { UserCollection as DBUserCollection } from '@prisma/client';
|
||||
import { mockDeep, mockReset } from 'jest-mock-extended';
|
||||
import {
|
||||
USER_COLL_DEST_SAME,
|
||||
@@ -17,6 +17,7 @@ import { PubSubService } from 'src/pubsub/pubsub.service';
|
||||
import { AuthUser } from 'src/types/AuthUser';
|
||||
import { ReqType } from 'src/types/RequestTypes';
|
||||
import { UserCollectionService } from './user-collection.service';
|
||||
import { UserCollection } from './user-collections.model';
|
||||
|
||||
const mockPrisma = mockDeep<PrismaService>();
|
||||
const mockPubSub = mockDeep<PubSubService>();
|
||||
@@ -41,7 +42,7 @@ const user: AuthUser = {
|
||||
currentRESTSession: {},
|
||||
};
|
||||
|
||||
const rootRESTUserCollection: UserCollection = {
|
||||
const rootRESTUserCollection: DBUserCollection = {
|
||||
id: '123',
|
||||
orderIndex: 1,
|
||||
parentID: null,
|
||||
@@ -50,9 +51,19 @@ const rootRESTUserCollection: UserCollection = {
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const rootGQLUserCollection: UserCollection = {
|
||||
const rootRESTUserCollectionCasted: UserCollection = {
|
||||
id: '123',
|
||||
parentID: null,
|
||||
userID: user.uid,
|
||||
title: 'Root Collection 1',
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify(rootRESTUserCollection.data),
|
||||
};
|
||||
|
||||
const rootGQLUserCollection: DBUserCollection = {
|
||||
id: '123',
|
||||
orderIndex: 1,
|
||||
parentID: null,
|
||||
@@ -61,9 +72,19 @@ const rootGQLUserCollection: UserCollection = {
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const rootRESTUserCollection_2: UserCollection = {
|
||||
const rootGQLUserCollectionCasted: UserCollection = {
|
||||
id: '123',
|
||||
parentID: null,
|
||||
title: 'Root Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify(rootGQLUserCollection.data),
|
||||
};
|
||||
|
||||
const rootRESTUserCollection_2: DBUserCollection = {
|
||||
id: '4gf',
|
||||
orderIndex: 2,
|
||||
parentID: null,
|
||||
@@ -72,9 +93,19 @@ const rootRESTUserCollection_2: UserCollection = {
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const rootGQLUserCollection_2: UserCollection = {
|
||||
const rootRESTUserCollection_2Casted: UserCollection = {
|
||||
id: '4gf',
|
||||
parentID: null,
|
||||
title: 'Root Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify(rootRESTUserCollection_2.data),
|
||||
};
|
||||
|
||||
const rootGQLUserCollection_2: DBUserCollection = {
|
||||
id: '4gf',
|
||||
orderIndex: 2,
|
||||
parentID: null,
|
||||
@@ -83,9 +114,19 @@ const rootGQLUserCollection_2: UserCollection = {
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const childRESTUserCollection: UserCollection = {
|
||||
const rootGQLUserCollection_2Casted: UserCollection = {
|
||||
id: '4gf',
|
||||
parentID: null,
|
||||
title: 'Root Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify(rootGQLUserCollection_2.data),
|
||||
};
|
||||
|
||||
const childRESTUserCollection: DBUserCollection = {
|
||||
id: '234',
|
||||
orderIndex: 1,
|
||||
parentID: rootRESTUserCollection.id,
|
||||
@@ -94,9 +135,19 @@ const childRESTUserCollection: UserCollection = {
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const childGQLUserCollection: UserCollection = {
|
||||
const childRESTUserCollectionCasted: UserCollection = {
|
||||
id: '234',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
};
|
||||
|
||||
const childGQLUserCollection: DBUserCollection = {
|
||||
id: '234',
|
||||
orderIndex: 1,
|
||||
parentID: rootRESTUserCollection.id,
|
||||
@@ -105,9 +156,19 @@ const childGQLUserCollection: UserCollection = {
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const childRESTUserCollection_2: UserCollection = {
|
||||
const childGQLUserCollectionCasted: UserCollection = {
|
||||
id: '234',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
};
|
||||
|
||||
const childRESTUserCollection_2: DBUserCollection = {
|
||||
id: '0kn',
|
||||
orderIndex: 2,
|
||||
parentID: rootRESTUserCollection_2.id,
|
||||
@@ -116,9 +177,19 @@ const childRESTUserCollection_2: UserCollection = {
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const childGQLUserCollection_2: UserCollection = {
|
||||
const childRESTUserCollection_2Casted: UserCollection = {
|
||||
id: '0kn',
|
||||
parentID: rootRESTUserCollection_2.id,
|
||||
title: 'Child Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
};
|
||||
|
||||
const childGQLUserCollection_2: DBUserCollection = {
|
||||
id: '0kn',
|
||||
orderIndex: 2,
|
||||
parentID: rootRESTUserCollection_2.id,
|
||||
@@ -127,9 +198,19 @@ const childGQLUserCollection_2: UserCollection = {
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
};
|
||||
|
||||
const childRESTUserCollectionList: UserCollection[] = [
|
||||
const childGQLUserCollection_2Casted: UserCollection = {
|
||||
id: '0kn',
|
||||
parentID: rootRESTUserCollection_2.id,
|
||||
title: 'Child Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
};
|
||||
|
||||
const childRESTUserCollectionList: DBUserCollection[] = [
|
||||
{
|
||||
id: '234',
|
||||
orderIndex: 1,
|
||||
@@ -139,6 +220,7 @@ const childRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
@@ -149,6 +231,7 @@ const childRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
@@ -159,6 +242,7 @@ const childRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
@@ -169,6 +253,7 @@ const childRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '678',
|
||||
@@ -179,10 +264,54 @@ const childRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
];
|
||||
|
||||
const childGQLUserCollectionList: UserCollection[] = [
|
||||
const childRESTUserCollectionListCasted: UserCollection[] = [
|
||||
{
|
||||
id: '234',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 3',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 4',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '678',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 5',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
];
|
||||
|
||||
const childGQLUserCollectionList: DBUserCollection[] = [
|
||||
{
|
||||
id: '234',
|
||||
orderIndex: 1,
|
||||
@@ -192,6 +321,7 @@ const childGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
@@ -202,6 +332,7 @@ const childGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
@@ -212,6 +343,7 @@ const childGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
@@ -222,6 +354,7 @@ const childGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '678',
|
||||
@@ -232,10 +365,54 @@ const childGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
];
|
||||
|
||||
const rootRESTUserCollectionList: UserCollection[] = [
|
||||
const childGQLUserCollectionListCasted: UserCollection[] = [
|
||||
{
|
||||
id: '234',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 3',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 4',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '678',
|
||||
parentID: rootRESTUserCollection.id,
|
||||
title: 'Child Collection 5',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
];
|
||||
|
||||
const rootRESTUserCollectionList: DBUserCollection[] = [
|
||||
{
|
||||
id: '123',
|
||||
orderIndex: 1,
|
||||
@@ -245,6 +422,7 @@ const rootRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '234',
|
||||
@@ -255,6 +433,7 @@ const rootRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
@@ -265,6 +444,7 @@ const rootRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
@@ -275,6 +455,7 @@ const rootRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
@@ -285,10 +466,54 @@ const rootRESTUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.REST,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
];
|
||||
|
||||
const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
const rootRESTUserCollectionListCasted: UserCollection[] = [
|
||||
{
|
||||
id: '123',
|
||||
parentID: null,
|
||||
title: 'Root Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '234',
|
||||
parentID: null,
|
||||
title: 'Root Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
parentID: null,
|
||||
title: 'Root Collection 3',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
parentID: null,
|
||||
title: 'Root Collection 4',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
parentID: null,
|
||||
title: 'Root Collection 5',
|
||||
userID: user.uid,
|
||||
type: ReqType.REST,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
];
|
||||
|
||||
const rootGQLUserCollectionList: DBUserCollection[] = [
|
||||
{
|
||||
id: '123',
|
||||
orderIndex: 1,
|
||||
@@ -298,6 +523,7 @@ const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '234',
|
||||
@@ -308,6 +534,7 @@ const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
@@ -318,6 +545,7 @@ const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
@@ -328,6 +556,7 @@ const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
@@ -338,6 +567,50 @@ const rootGQLGQLUserCollectionList: UserCollection[] = [
|
||||
type: ReqType.GQL,
|
||||
createdOn: currentTime,
|
||||
updatedOn: currentTime,
|
||||
data: {},
|
||||
},
|
||||
];
|
||||
|
||||
const rootGQLUserCollectionListCasted: UserCollection[] = [
|
||||
{
|
||||
id: '123',
|
||||
parentID: null,
|
||||
title: 'Root Collection 1',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '234',
|
||||
parentID: null,
|
||||
title: 'Root Collection 2',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '345',
|
||||
parentID: null,
|
||||
title: 'Root Collection 3',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '456',
|
||||
parentID: null,
|
||||
title: 'Root Collection 4',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
{
|
||||
id: '567',
|
||||
parentID: null,
|
||||
title: 'Root Collection 5',
|
||||
userID: user.uid,
|
||||
type: ReqType.GQL,
|
||||
data: JSON.stringify({}),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -356,7 +629,7 @@ describe('getParentOfUserCollection', () => {
|
||||
const result = await userCollectionService.getParentOfUserCollection(
|
||||
childRESTUserCollection.id,
|
||||
);
|
||||
expect(result).toEqual(rootRESTUserCollection);
|
||||
expect(result).toEqual(rootRESTUserCollectionCasted);
|
||||
});
|
||||
test('should return null with invalid collectionID', async () => {
|
||||
mockPrisma.userCollection.findUnique.mockResolvedValueOnce(
|
||||
@@ -367,7 +640,7 @@ describe('getParentOfUserCollection', () => {
|
||||
'invalidId',
|
||||
);
|
||||
//TODO: check it not null
|
||||
expect(result).toEqual(undefined);
|
||||
expect(result).toEqual(null);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -383,7 +656,7 @@ describe('getChildrenOfUserCollection', () => {
|
||||
10,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqual(childRESTUserCollectionList);
|
||||
expect(result).toEqual(childRESTUserCollectionListCasted);
|
||||
});
|
||||
test('should return a list of paginated child GQL user-collections with valid collectionID', async () => {
|
||||
mockPrisma.userCollection.findMany.mockResolvedValueOnce(
|
||||
@@ -396,7 +669,7 @@ describe('getChildrenOfUserCollection', () => {
|
||||
10,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqual(childGQLUserCollectionList);
|
||||
expect(result).toEqual(childGQLUserCollectionListCasted);
|
||||
});
|
||||
test('should return a empty array with a invalid REST collectionID', async () => {
|
||||
mockPrisma.userCollection.findMany.mockResolvedValueOnce([]);
|
||||
@@ -455,11 +728,11 @@ describe('getUserRootCollections', () => {
|
||||
10,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqual(rootRESTUserCollectionList);
|
||||
expect(result).toEqual(rootRESTUserCollectionListCasted);
|
||||
});
|
||||
test('should return a list of paginated root GQL user-collections with valid collectionID', async () => {
|
||||
mockPrisma.userCollection.findMany.mockResolvedValueOnce(
|
||||
rootGQLGQLUserCollectionList,
|
||||
rootGQLUserCollectionList,
|
||||
);
|
||||
|
||||
const result = await userCollectionService.getUserRootCollections(
|
||||
@@ -468,7 +741,7 @@ describe('getUserRootCollections', () => {
|
||||
10,
|
||||
ReqType.GQL,
|
||||
);
|
||||
expect(result).toEqual(rootGQLGQLUserCollectionList);
|
||||
expect(result).toEqual(rootGQLUserCollectionListCasted);
|
||||
});
|
||||
test('should return a empty array with a invalid REST collectionID', async () => {
|
||||
mockPrisma.userCollection.findMany.mockResolvedValueOnce([]);
|
||||
@@ -499,11 +772,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
'',
|
||||
JSON.stringify(rootRESTUserCollection.data),
|
||||
rootRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_SHORT_TITLE);
|
||||
});
|
||||
|
||||
test('should throw USER_NOT_OWNER when user is not the owner of the collection', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce({
|
||||
@@ -514,11 +789,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
rootRESTUserCollection.title,
|
||||
JSON.stringify(rootRESTUserCollection.data),
|
||||
rootRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqualLeft(USER_NOT_OWNER);
|
||||
});
|
||||
|
||||
test('should successfully create a new root REST user-collection with valid inputs', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -534,11 +811,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
rootRESTUserCollection.title,
|
||||
JSON.stringify(rootRESTUserCollection.data),
|
||||
rootRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqualRight(rootRESTUserCollection);
|
||||
expect(result).toEqualRight(rootRESTUserCollectionCasted);
|
||||
});
|
||||
|
||||
test('should successfully create a new root GQL user-collection with valid inputs', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -554,11 +833,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
rootGQLUserCollection.title,
|
||||
JSON.stringify(rootGQLUserCollection.data),
|
||||
rootGQLUserCollection.id,
|
||||
ReqType.GQL,
|
||||
);
|
||||
expect(result).toEqualRight(rootGQLUserCollection);
|
||||
expect(result).toEqualRight(rootGQLUserCollectionCasted);
|
||||
});
|
||||
|
||||
test('should successfully create a new child REST user-collection with valid inputs', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -574,11 +855,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
childRESTUserCollection.title,
|
||||
JSON.stringify(childRESTUserCollection.data),
|
||||
childRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(result).toEqualRight(childRESTUserCollection);
|
||||
expect(result).toEqualRight(childRESTUserCollectionCasted);
|
||||
});
|
||||
|
||||
test('should successfully create a new child GQL user-collection with valid inputs', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -594,11 +877,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
childGQLUserCollection.title,
|
||||
JSON.stringify(childGQLUserCollection.data),
|
||||
childGQLUserCollection.id,
|
||||
ReqType.GQL,
|
||||
);
|
||||
expect(result).toEqualRight(childGQLUserCollection);
|
||||
expect(result).toEqualRight(childGQLUserCollectionCasted);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/created" if child REST user-collection is created successfully', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -614,14 +899,16 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
childRESTUserCollection.title,
|
||||
JSON.stringify(childRESTUserCollection.data),
|
||||
childRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/created`,
|
||||
childRESTUserCollection,
|
||||
childRESTUserCollectionCasted,
|
||||
);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/created" if child GQL user-collection is created successfully', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -637,14 +924,16 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
childGQLUserCollection.title,
|
||||
JSON.stringify(childGQLUserCollection.data),
|
||||
childGQLUserCollection.id,
|
||||
ReqType.GQL,
|
||||
);
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/created`,
|
||||
childGQLUserCollection,
|
||||
childGQLUserCollectionCasted,
|
||||
);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/created" if REST root user-collection is created successfully', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -660,14 +949,16 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
rootRESTUserCollection.title,
|
||||
JSON.stringify(rootRESTUserCollection.data),
|
||||
rootRESTUserCollection.id,
|
||||
ReqType.REST,
|
||||
);
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/created`,
|
||||
rootRESTUserCollection,
|
||||
rootRESTUserCollectionCasted,
|
||||
);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/created" if GQL root user-collection is created successfully', async () => {
|
||||
// isOwnerCheck
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -683,12 +974,13 @@ describe('createUserCollection', () => {
|
||||
const result = await userCollectionService.createUserCollection(
|
||||
user,
|
||||
rootGQLUserCollection.title,
|
||||
JSON.stringify(rootGQLUserCollection.data),
|
||||
rootGQLUserCollection.id,
|
||||
ReqType.GQL,
|
||||
);
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/created`,
|
||||
rootGQLUserCollection,
|
||||
rootGQLUserCollectionCasted,
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -732,7 +1024,7 @@ describe('renameUserCollection', () => {
|
||||
user.uid,
|
||||
);
|
||||
expect(result).toEqualRight({
|
||||
...rootRESTUserCollection,
|
||||
...rootRESTUserCollectionCasted,
|
||||
title: 'NewTitle',
|
||||
});
|
||||
});
|
||||
@@ -770,7 +1062,7 @@ describe('renameUserCollection', () => {
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/updated`,
|
||||
{
|
||||
...rootRESTUserCollection,
|
||||
...rootRESTUserCollectionCasted,
|
||||
title: 'NewTitle',
|
||||
},
|
||||
);
|
||||
@@ -895,6 +1187,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_FOUND);
|
||||
});
|
||||
|
||||
test('should throw USER_NOT_OWNER if user is not owner of collection', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -908,6 +1201,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_NOT_OWNER);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_DEST_SAME if userCollectionID and destCollectionID is the same', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -921,6 +1215,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_DEST_SAME);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_FOUND if destCollectionID is invalid', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -938,6 +1233,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_FOUND);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_SAME_TYPE if userCollectionID and destCollectionID are not the same collection type', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -955,6 +1251,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_SAME_TYPE);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_SAME_USER if userCollectionID and destCollectionID are not from the same user', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -973,6 +1270,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_SAME_USER);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_IS_PARENT_COLL if userCollectionID is parent of destCollectionID ', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -990,6 +1288,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_IS_PARENT_COLL);
|
||||
});
|
||||
|
||||
test('should throw USER_COL_ALREADY_ROOT when moving root user-collection to root', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1003,6 +1302,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_ALREADY_ROOT);
|
||||
});
|
||||
|
||||
test('should successfully move a child user-collection into root', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1030,11 +1330,11 @@ describe('moveUserCollection', () => {
|
||||
user.uid,
|
||||
);
|
||||
expect(result).toEqualRight({
|
||||
...childRESTUserCollection,
|
||||
...childRESTUserCollectionCasted,
|
||||
parentID: null,
|
||||
orderIndex: 2,
|
||||
});
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_FOUND when trying to change parent of collection with invalid collectionID', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1059,6 +1359,7 @@ describe('moveUserCollection', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_FOUND);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/moved" when user-collection is moved to root successfully', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1088,12 +1389,12 @@ describe('moveUserCollection', () => {
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/moved`,
|
||||
{
|
||||
...childRESTUserCollection,
|
||||
...childRESTUserCollectionCasted,
|
||||
parentID: null,
|
||||
orderIndex: 2,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('should successfully move a root user-collection into a child user-collection', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1129,11 +1430,11 @@ describe('moveUserCollection', () => {
|
||||
user.uid,
|
||||
);
|
||||
expect(result).toEqualRight({
|
||||
...rootRESTUserCollection,
|
||||
parentID: childRESTUserCollection_2.id,
|
||||
orderIndex: 1,
|
||||
...rootRESTUserCollectionCasted,
|
||||
parentID: childRESTUserCollection_2Casted.id,
|
||||
});
|
||||
});
|
||||
|
||||
test('should successfully move a child user-collection into another child user-collection', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1169,11 +1470,11 @@ describe('moveUserCollection', () => {
|
||||
user.uid,
|
||||
);
|
||||
expect(result).toEqualRight({
|
||||
...rootRESTUserCollection,
|
||||
parentID: childRESTUserCollection.id,
|
||||
orderIndex: 1,
|
||||
...rootRESTUserCollectionCasted,
|
||||
parentID: childRESTUserCollectionCasted.id,
|
||||
});
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/moved" when user-collection is moved into another child user-collection successfully', async () => {
|
||||
// getUserCollection
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1211,9 +1512,8 @@ describe('moveUserCollection', () => {
|
||||
expect(mockPubSub.publish).toHaveBeenCalledWith(
|
||||
`user_coll/${user.uid}/moved`,
|
||||
{
|
||||
...rootRESTUserCollection,
|
||||
parentID: childRESTUserCollection.id,
|
||||
orderIndex: 1,
|
||||
...rootRESTUserCollectionCasted,
|
||||
parentID: childRESTUserCollectionCasted.id,
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -1228,6 +1528,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_SAME_NEXT_COLL);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_FOUND if collectionID is invalid', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockRejectedValueOnce(
|
||||
@@ -1241,6 +1542,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_FOUND);
|
||||
});
|
||||
|
||||
test('should throw USER_NOT_OWNER if userUID is of a different user', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1254,6 +1556,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_NOT_OWNER);
|
||||
});
|
||||
|
||||
test('should successfully move the child user-collection to the end of the list', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1272,6 +1575,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualRight(true);
|
||||
});
|
||||
|
||||
test('should successfully move the root user-collection to the end of the list', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1290,6 +1594,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualRight(true);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_REORDERING_FAILED when re-ordering operation failed for child user-collection list', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1304,6 +1609,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_REORDERING_FAILED);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/order_updated" when user-collection order is updated successfully', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow.mockResolvedValueOnce(
|
||||
@@ -1324,13 +1630,14 @@ describe('updateUserCollectionOrder', () => {
|
||||
`user_coll/${user.uid}/order_updated`,
|
||||
{
|
||||
userCollection: {
|
||||
...childRESTUserCollectionList[4],
|
||||
userID: childRESTUserCollectionList[4].userUid,
|
||||
...childRESTUserCollectionListCasted[4],
|
||||
userID: childRESTUserCollectionListCasted[4].userID,
|
||||
},
|
||||
nextUserCollection: null,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_SAME_USER when collectionID and nextCollectionID do not belong to the same user account', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow
|
||||
@@ -1347,6 +1654,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_SAME_USER);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_NOT_SAME_TYPE when collectionID and nextCollectionID do not belong to the same collection type', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow
|
||||
@@ -1363,6 +1671,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_NOT_SAME_TYPE);
|
||||
});
|
||||
|
||||
test('should successfully update the order of the child user-collection list', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow
|
||||
@@ -1376,6 +1685,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualRight(true);
|
||||
});
|
||||
|
||||
test('should throw USER_COLL_REORDERING_FAILED when re-ordering operation failed for child user-collection list', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow
|
||||
@@ -1391,6 +1701,7 @@ describe('updateUserCollectionOrder', () => {
|
||||
);
|
||||
expect(result).toEqualLeft(USER_COLL_REORDERING_FAILED);
|
||||
});
|
||||
|
||||
test('should send pubsub message to "user_coll/<userID>/order_updated" when user-collection order is updated successfully', async () => {
|
||||
// getUserCollection;
|
||||
mockPrisma.userCollection.findUniqueOrThrow
|
||||
@@ -1406,12 +1717,12 @@ describe('updateUserCollectionOrder', () => {
|
||||
`user_coll/${user.uid}/order_updated`,
|
||||
{
|
||||
userCollection: {
|
||||
...childRESTUserCollectionList[4],
|
||||
userID: childRESTUserCollectionList[4].userUid,
|
||||
...childRESTUserCollectionListCasted[4],
|
||||
userID: childRESTUserCollectionListCasted[4].userID,
|
||||
},
|
||||
nextUserCollection: {
|
||||
...childRESTUserCollectionList[2],
|
||||
userID: childRESTUserCollectionList[2].userUid,
|
||||
...childRESTUserCollectionListCasted[2],
|
||||
userID: childRESTUserCollectionListCasted[2].userID,
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -44,7 +44,10 @@ export class UserCollectionService {
|
||||
*/
|
||||
private cast(collection: UserCollection) {
|
||||
return <UserCollectionModel>{
|
||||
...collection,
|
||||
id: collection.id,
|
||||
title: collection.title,
|
||||
type: collection.type,
|
||||
parentID: collection.parentID,
|
||||
userID: collection.userUid,
|
||||
data: !collection.data ? null : JSON.stringify(collection.data),
|
||||
};
|
||||
@@ -226,7 +229,6 @@ export class UserCollectionService {
|
||||
const isTitleValid = isValidLength(title, this.TITLE_LENGTH);
|
||||
if (!isTitleValid) return E.left(USER_COLL_SHORT_TITLE);
|
||||
|
||||
console.log(data);
|
||||
const collectionData = stringToJson(data);
|
||||
if (E.isLeft(collectionData)) return E.left(USER_COLL_DATA_INVALID);
|
||||
|
||||
@@ -1100,8 +1102,10 @@ export class UserCollectionService {
|
||||
collectionData = jsonReq.right;
|
||||
}
|
||||
|
||||
if (newTitle != null) {
|
||||
const isTitleValid = isValidLength(newTitle, this.TITLE_LENGTH);
|
||||
if (!isTitleValid) return E.left(USER_COLL_SHORT_TITLE);
|
||||
}
|
||||
|
||||
// Check to see is the collection belongs to the user
|
||||
const isOwner = await this.isOwnerCheck(userCollectionID, userID);
|
||||
|
||||
Reference in New Issue
Block a user