From 78ed67f2467c34f42a0ee86de3f7e947016ab4c7 Mon Sep 17 00:00:00 2001 From: Charles Nykamp Date: Sat, 14 Sep 2024 10:46:09 -0500 Subject: [PATCH] Add longer timeout for subfolders test --- server/src/model.test.ts | 425 +++++++++++++++++++++------------------ 1 file changed, 227 insertions(+), 198 deletions(-) diff --git a/server/src/model.test.ts b/server/src/model.test.ts index 5709bf4db..e2140f5cc 100644 --- a/server/src/model.test.ts +++ b/server/src/model.test.ts @@ -72,9 +72,10 @@ import { getDocumentSource, getPreferredFolderView, setPreferredFolderView, + getAllClassificationInfo, } from "./model"; import { DateTime } from "luxon"; -import { ContentStructure } from "./types"; +import { ClassificationSystemTree, ContentStructure } from "./types"; import { allAssignmentScoresConvertUUID, fromUUID, @@ -6969,6 +6970,16 @@ test("Get classifications of public activity", async () => { expect(classifications.length).toBe(2); }); +test("Get all classification info as tree", async () => { + const results: ClassificationSystemTree[] = await getAllClassificationInfo(); + expect(results.length).toBeGreaterThan(0); + expect(results[0].categories.length).toBeGreaterThan(0); + expect(results[0].categories[0].subCategories.length).toBeGreaterThan(0); + expect( + results[0].categories[0].subCategories[0].classifications.length, + ).toBeGreaterThan(0); +}); + test("Search for content classifications", async () => { { // Code @@ -7004,211 +7015,229 @@ test("Search for content classifications", async () => { } }); -test("search my folder content searches all subfolders", async () => { - const owner = await createTestUser(); - const ownerId = owner.userId; - - // Folder structure - // The Base folder - // - The first topic - // - First activity - // - Deleted activity (deleted) - // - Subtopic - // - First piece (deleted) - // - Second piece - // - Activity 2 - // - Activity 3 (deleted) - // Activity gone (deleted) - // Activity root, first - - const { folderId: baseFolderId } = await createFolder(ownerId, null); - await updateContent({ id: baseFolderId, ownerId, name: "The Base Folder" }); - const { folderId: folder1Id } = await createFolder(ownerId, baseFolderId); - await updateContent({ id: folder1Id, ownerId, name: "The first topic" }); - - const { activityId: activity1aId } = await createActivity(ownerId, folder1Id); - await updateContent({ - id: activity1aId, - ownerId, - name: "First activity", - }); - - const { activityId: activity1bId } = await createActivity(ownerId, folder1Id); - await updateContent({ id: activity1bId, ownerId, name: "Deleted activity" }); - await deleteActivity(activity1bId, ownerId); - - const { folderId: folder1cId } = await createFolder(ownerId, folder1Id); - await updateContent({ id: folder1cId, ownerId, name: "Subtopic " }); - - const { activityId: activity1c1Id } = await createActivity( - ownerId, - folder1cId, - ); - await updateContent({ id: activity1c1Id, ownerId, name: "First piece" }); - await deleteActivity(activity1c1Id, ownerId); - - const { activityId: activity1c2Id } = await createActivity( - ownerId, - folder1cId, - ); - await updateContent({ id: activity1c2Id, ownerId, name: "Second piece" }); - - const { activityId: activity2Id } = await createActivity( - ownerId, - baseFolderId, - ); - await updateContent({ id: activity2Id, ownerId, name: "Activity 2" }); - const { activityId: activity3Id } = await createActivity( - ownerId, - baseFolderId, - ); - await updateContent({ id: activity3Id, ownerId, name: "Activity 3" }); - await deleteActivity(activity3Id, ownerId); - - const { activityId: activityGoneId } = await createActivity(ownerId, null); - await updateContent({ id: activityGoneId, ownerId, name: "Activity gone" }); - await deleteActivity(activityGoneId, ownerId); - const { activityId: activityRootId } = await createActivity(ownerId, null); - await updateContent({ - id: activityRootId, - ownerId, - name: "Activity root, first", - }); +test( + "search my folder content searches all subfolders", + { timeout: 30000 }, + async () => { + const owner = await createTestUser(); + const ownerId = owner.userId; - let searchResults = await searchMyFolderContent({ - folderId: null, - loggedInUserId: ownerId, - query: "first", - }); - expect(searchResults.folder).eq(null); - let content = searchResults.content; - expect(content.length).eq(3); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([ - { id: fromUUID(folder1Id), parentFolderId: fromUUID(baseFolderId) }, - { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, - { id: fromUUID(activityRootId), parentFolderId: null }, - ]); + // Folder structure + // The Base folder + // - The first topic + // - First activity + // - Deleted activity (deleted) + // - Subtopic + // - First piece (deleted) + // - Second piece + // - Activity 2 + // - Activity 3 (deleted) + // Activity gone (deleted) + // Activity root, first + + const { folderId: baseFolderId } = await createFolder(ownerId, null); + await updateContent({ id: baseFolderId, ownerId, name: "The Base Folder" }); + const { folderId: folder1Id } = await createFolder(ownerId, baseFolderId); + await updateContent({ id: folder1Id, ownerId, name: "The first topic" }); + + const { activityId: activity1aId } = await createActivity( + ownerId, + folder1Id, + ); + await updateContent({ + id: activity1aId, + ownerId, + name: "First activity", + }); - searchResults = await searchMyFolderContent({ - folderId: baseFolderId, - loggedInUserId: ownerId, - query: "first", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(baseFolderId)); - content = searchResults.content; - expect(content.length).eq(2); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([ - { id: fromUUID(folder1Id), parentFolderId: fromUUID(baseFolderId) }, - { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, - ]); + const { activityId: activity1bId } = await createActivity( + ownerId, + folder1Id, + ); + await updateContent({ + id: activity1bId, + ownerId, + name: "Deleted activity", + }); + await deleteActivity(activity1bId, ownerId); - searchResults = await searchMyFolderContent({ - folderId: folder1Id, - loggedInUserId: ownerId, - query: "first", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1Id)); - content = searchResults.content; - expect(content.length).eq(1); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([{ id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }]); + const { folderId: folder1cId } = await createFolder(ownerId, folder1Id); + await updateContent({ id: folder1cId, ownerId, name: "Subtopic " }); - searchResults = await searchMyFolderContent({ - folderId: folder1cId, - loggedInUserId: ownerId, - query: "first", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1cId)); - content = searchResults.content; - expect(content.length).eq(0); + const { activityId: activity1c1Id } = await createActivity( + ownerId, + folder1cId, + ); + await updateContent({ id: activity1c1Id, ownerId, name: "First piece" }); + await deleteActivity(activity1c1Id, ownerId); - searchResults = await searchMyFolderContent({ - folderId: null, - loggedInUserId: ownerId, - query: "activity", - }); - expect(searchResults.folder).eq(null); - content = searchResults.content; - expect(content.length).eq(3); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([ - { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, - { id: fromUUID(activity2Id), parentFolderId: fromUUID(baseFolderId) }, - { id: fromUUID(activityRootId), parentFolderId: null }, - ]); + const { activityId: activity1c2Id } = await createActivity( + ownerId, + folder1cId, + ); + await updateContent({ id: activity1c2Id, ownerId, name: "Second piece" }); - searchResults = await searchMyFolderContent({ - folderId: baseFolderId, - loggedInUserId: ownerId, - query: "activity", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(baseFolderId)); - content = searchResults.content; - expect(content.length).eq(2); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([ - { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, - { id: fromUUID(activity2Id), parentFolderId: fromUUID(baseFolderId) }, - ]); + const { activityId: activity2Id } = await createActivity( + ownerId, + baseFolderId, + ); + await updateContent({ id: activity2Id, ownerId, name: "Activity 2" }); + const { activityId: activity3Id } = await createActivity( + ownerId, + baseFolderId, + ); + await updateContent({ id: activity3Id, ownerId, name: "Activity 3" }); + await deleteActivity(activity3Id, ownerId); + + const { activityId: activityGoneId } = await createActivity(ownerId, null); + await updateContent({ id: activityGoneId, ownerId, name: "Activity gone" }); + await deleteActivity(activityGoneId, ownerId); + const { activityId: activityRootId } = await createActivity(ownerId, null); + await updateContent({ + id: activityRootId, + ownerId, + name: "Activity root, first", + }); - searchResults = await searchMyFolderContent({ - folderId: folder1Id, - loggedInUserId: ownerId, - query: "activity", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1Id)); - content = searchResults.content; - expect(content.length).eq(1); - expect( - content - .sort((a, b) => a.id.compare(b.id)) - .map((c) => ({ - id: fromUUID(c.id), - parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, - })), - ).eqls([{ id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }]); + let searchResults = await searchMyFolderContent({ + folderId: null, + loggedInUserId: ownerId, + query: "first", + }); + expect(searchResults.folder).eq(null); + let content = searchResults.content; + expect(content.length).eq(3); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(folder1Id), parentFolderId: fromUUID(baseFolderId) }, + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + { id: fromUUID(activityRootId), parentFolderId: null }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: baseFolderId, + loggedInUserId: ownerId, + query: "first", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(baseFolderId)); + content = searchResults.content; + expect(content.length).eq(2); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(folder1Id), parentFolderId: fromUUID(baseFolderId) }, + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: folder1Id, + loggedInUserId: ownerId, + query: "first", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1Id)); + content = searchResults.content; + expect(content.length).eq(1); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: folder1cId, + loggedInUserId: ownerId, + query: "first", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1cId)); + content = searchResults.content; + expect(content.length).eq(0); - searchResults = await searchMyFolderContent({ - folderId: folder1cId, - loggedInUserId: ownerId, - query: "activity", - }); - expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1cId)); - content = searchResults.content; - expect(content.length).eq(0); -}); + searchResults = await searchMyFolderContent({ + folderId: null, + loggedInUserId: ownerId, + query: "activity", + }); + expect(searchResults.folder).eq(null); + content = searchResults.content; + expect(content.length).eq(3); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + { id: fromUUID(activity2Id), parentFolderId: fromUUID(baseFolderId) }, + { id: fromUUID(activityRootId), parentFolderId: null }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: baseFolderId, + loggedInUserId: ownerId, + query: "activity", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(baseFolderId)); + content = searchResults.content; + expect(content.length).eq(2); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + { id: fromUUID(activity2Id), parentFolderId: fromUUID(baseFolderId) }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: folder1Id, + loggedInUserId: ownerId, + query: "activity", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1Id)); + content = searchResults.content; + expect(content.length).eq(1); + expect( + content + .sort((a, b) => a.id.compare(b.id)) + .map((c) => ({ + id: fromUUID(c.id), + parentFolderId: c.parentFolder ? fromUUID(c.parentFolder.id) : null, + })), + ).eqls([ + { id: fromUUID(activity1aId), parentFolderId: fromUUID(folder1Id) }, + ]); + + searchResults = await searchMyFolderContent({ + folderId: folder1cId, + loggedInUserId: ownerId, + query: "activity", + }); + expect(fromUUID(searchResults.folder!.id)).eq(fromUUID(folder1cId)); + content = searchResults.content; + expect(content.length).eq(0); + }, +); test("searchMyFolderContent, document source matches", async () => { const owner = await createTestUser();