From 55ed8d7f81d3da07dc6c1569ca0d0a38b093cd38 Mon Sep 17 00:00:00 2001 From: tomolld Date: Tue, 17 Dec 2024 08:15:37 +0900 Subject: [PATCH] f --- .../edit/utils/processHtmlContent.test.ts | 18 +++++++++--------- .../$slug+/edit/utils/processHtmlContent.ts | 10 ++++++---- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.test.ts b/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.test.ts index 1056e5b1..19d91f12 100644 --- a/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.test.ts +++ b/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.test.ts @@ -248,7 +248,7 @@ describe("processHtmlContent", () => {

Line B

Line C

`; - + const user = await prisma.user.upsert({ where: { id: 13 }, create: { @@ -260,46 +260,46 @@ describe("processHtmlContent", () => { }, update: {}, }); - + // 初回処理 await processHtmlContent(title, htmlInput, pageSlug, user.id, "en", true); - + const dbPage1 = await prisma.page.findUnique({ where: { slug: pageSlug }, include: { sourceTexts: true }, }); expect(dbPage1).not.toBeNull(); if (!dbPage1) return; - + // 初回処理時のIDを記憶 const originalTextIdMap = new Map(); for (const st of dbPage1.sourceTexts) { originalTextIdMap.set(st.text, st.id); } expect(originalTextIdMap.size).toBeGreaterThanOrEqual(3); - + // 変更なしで再度同一HTMLを処理 await processHtmlContent(title, htmlInput, pageSlug, user.id, "en", true); - + const dbPage2 = await prisma.page.findUnique({ where: { slug: pageSlug }, include: { sourceTexts: true }, }); expect(dbPage2).not.toBeNull(); if (!dbPage2) return; - + // 再処理後のIDマッピングを取得 const afterTextIdMap = new Map(); for (const st of dbPage2.sourceTexts) { afterTextIdMap.set(st.text, st.id); } - + // 全てのテキストでIDが変わっていないことを確認 for (const [text, originalId] of originalTextIdMap.entries()) { console.log(text, originalId); expect(afterTextIdMap.get(text)).toBe(originalId); } - + // source_textsの数が増減していないこと(無駄な消去がないこと) expect(dbPage2.sourceTexts.length).toBe(dbPage1.sourceTexts.length); }); diff --git a/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.ts b/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.ts index 6e0950a7..fa958acf 100644 --- a/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.ts +++ b/web/app/routes/$userName+/page+/$slug+/edit/utils/processHtmlContent.ts @@ -42,7 +42,10 @@ function extractTextFromHAST(node: Parent): string { }); return result; } -export function rehypeAddDataId(pageId: number, title: string): Plugin<[], Root> { +export function rehypeAddDataId( + pageId: number, + title: string, +): Plugin<[], Root> { return function attacher() { return async (tree: Root, file: VFile) => { const textOccurrenceMap = new Map(); @@ -74,13 +77,12 @@ export function rehypeAddDataId(pageId: number, title: string): Plugin<[], Root> } }); - const allTextsForDb = blocks.map((block, index) => ({ text: block.text, textAndOccurrenceHash: block.textAndOccurrenceHash, number: index + 1, - })) - + })); + allTextsForDb.push({ text: title, textAndOccurrenceHash: generateHashForText(title, 0),