diff --git a/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.test.ts b/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.test.ts index b29b2152..b22b7ded 100644 --- a/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.test.ts +++ b/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.test.ts @@ -25,46 +25,32 @@ describe("isNegativeComparisonValue", () => { it("returns false for positive or neutral values", () => { expect(isNegativeComparisonValue("Yes · all models")).toBe(false); - expect(isNegativeComparisonValue("Rp12,400,000")).toBe(false); + expect(isNegativeComparisonValue("Included")).toBe(false); }); }); describe("getOneaiComparisonRows", () => { - it("returns eleven localized rows for English", () => { + it("returns capability rows without cost comparisons for English", () => { const rows = getOneaiComparisonRows({ lang: "en" }); - expect(rows).toHaveLength(11); - expect(rows[0]?.feature).toBe("20 users"); - expect(rows[0]?.advantage).toBeNull(); - expect(rows[0]?.chatgpt).toContain("annual"); - expect(rows[0]?.copilot).toContain("M365"); - expect(rows[1]?.advantage).toBeNull(); - expect(rows[1]?.chatgpt).toContain("Rp12,800,000"); - expect(rows[2]?.chatgpt).toContain("included"); - expect(rows[2]?.chatgpt).not.toMatch(/bought separately/i); - expect(rows[2]?.copilot).toContain("add-on"); - expect(rows[3]?.feature).toContain("across providers"); - expect(rows[9]?.chatgpt).toContain("Yes"); - expect(rows[9]?.oneai).toContain("Yes"); - expect(rows[9]?.advantage).toBeNull(); - expect(rows[10]?.feature).toContain("On-prem"); - expect(rows[10]?.oneai).toBe("Yes"); - expect(rows[10]?.copilot).toContain("cloud-only"); - expect(rows[10]?.advantage).toBe("capability"); + expect(rows).toHaveLength(9); + expect(rows[0]?.feature).toContain("Usage budget"); + expect(rows[0]?.oneai).toContain("Shared budget"); + expect(rows[0]?.chatgpt).toContain("included"); + expect(rows[8]?.feature).toContain("On-prem"); + expect(rows[8]?.oneai).toBe("Yes"); + expect(rows[8]?.copilot).toContain("cloud-only"); + expect(rows[8]?.advantage).toBe("capability"); }); - it("returns eleven localized rows for Indonesian", () => { + it("returns capability rows without cost comparisons for Indonesian", () => { const rows = getOneaiComparisonRows({ lang: "id" }); - expect(rows).toHaveLength(11); - expect(rows[0]?.feature).toBe("20 pengguna"); - expect(rows[1]?.oneai).toContain("harga tetap"); - expect(rows[1]?.chatgpt).toContain("tahunan"); - expect(rows[1]?.copilot).toContain("M365"); - expect(rows[2]?.chatgpt).not.toMatch(/dibeli terpisah/i); - expect(rows[3]?.advantage).toBe("capability"); - expect(rows[10]?.feature).toContain("On-premise"); - expect(rows[10]?.copilot).toContain("cloud saja"); + expect(rows).toHaveLength(9); + expect(rows[0]?.feature).toContain("Anggaran pemakaian"); + expect(rows[0]?.oneai).toContain("Satu anggaran"); + expect(rows[8]?.feature).toContain("On-premise"); + expect(rows[8]?.copilot).toContain("cloud saja"); }); it("uses injected row loaders when provided", () => { @@ -95,7 +81,7 @@ describe("getOneaiComparisonRows", () => { }); it("exports default row loaders for each comparison row", () => { - expect(DEFAULT_ROW_LOADERS).toHaveLength(11); + expect(DEFAULT_ROW_LOADERS).toHaveLength(9); expect( DEFAULT_ROW_LOADERS.filter((row) => row.advantage === "price") ).toHaveLength(0); @@ -119,7 +105,7 @@ describe("getOneaiComparisonWhy", () => { expect(columns).toHaveLength(3); expect(columns[0]?.title).toContain("Allowance"); - expect(columns[1]?.title).toContain("kursi"); + expect(columns[1]?.title).toContain("Kursi"); }); it("uses injected why loaders when provided", () => { diff --git a/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.ts b/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.ts index f381e4c5..e081b756 100644 --- a/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.ts +++ b/app/[lang]/(hyperjump)/oneai/get-oneai-comparison-rows.ts @@ -1,15 +1,5 @@ import type { SupportedLanguage } from "@/locales/.generated/types"; import { - oneaiComparisonRows0Chatgpt, - oneaiComparisonRows0Copilot, - oneaiComparisonRows0Feature, - oneaiComparisonRows0Oneai, - oneaiComparisonRows0Stipend, - oneaiComparisonRows1Chatgpt, - oneaiComparisonRows1Copilot, - oneaiComparisonRows1Feature, - oneaiComparisonRows1Oneai, - oneaiComparisonRows1Stipend, oneaiComparisonRows2Chatgpt, oneaiComparisonRows2Copilot, oneaiComparisonRows2Feature, @@ -104,22 +94,6 @@ const NEGATIVE_COMPARISON_VALUE_PATTERN = /^(No|Tidak|Limited|Terbatas|Not ZDR|Bukan ZDR|Tergantung|Depends)/i; const DEFAULT_ROW_LOADERS: RowLoader[] = [ - { - feature: oneaiComparisonRows0Feature, - stipend: oneaiComparisonRows0Stipend, - chatgpt: oneaiComparisonRows0Chatgpt, - copilot: oneaiComparisonRows0Copilot, - oneai: oneaiComparisonRows0Oneai, - advantage: null - }, - { - feature: oneaiComparisonRows1Feature, - stipend: oneaiComparisonRows1Stipend, - chatgpt: oneaiComparisonRows1Chatgpt, - copilot: oneaiComparisonRows1Copilot, - oneai: oneaiComparisonRows1Oneai, - advantage: null - }, { feature: oneaiComparisonRows2Feature, stipend: oneaiComparisonRows2Stipend, diff --git a/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.test.ts b/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.test.ts index 19ed285b..59de94a8 100644 --- a/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.test.ts +++ b/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.test.ts @@ -29,8 +29,8 @@ describe("getDefaultOneaiFaqs", () => { expect(faqs[0]?.question).toContain("users"); expect(faqs[1]?.question).toContain("more than 40"); expect(faqs[1]?.answer).toContain("Contact us"); - expect(faqs[3]?.question).toContain("USD 300"); - expect(faqs[3]?.answer).toContain("overage"); + expect(faqs[3]?.question).toContain("usage reaches its limit"); + expect(faqs[3]?.answer).toContain("additional capacity"); expect(faqs[5]?.question).toContain("installed"); expect(faqs[5]?.answer).toContain("premises"); expect(faqs[5]?.answer).toContain("isolated"); @@ -43,8 +43,8 @@ describe("getDefaultOneaiFaqs", () => { expect(faqs[0]?.question).toContain("pengguna"); expect(faqs[1]?.question).toContain("lebih dari 40"); expect(faqs[1]?.answer).toContain("Hubungi kami"); - expect(faqs[3]?.question).toContain("USD 300"); - expect(faqs[3]?.answer).toContain("overage"); + expect(faqs[3]?.question).toContain("mencapai batasnya"); + expect(faqs[3]?.answer).toContain("kapasitas tambahan"); expect(faqs[5]?.question).toContain("dipasang"); expect(faqs[5]?.answer).toContain("infrastruktur"); expect(faqs[5]?.answer).toContain("terisolasi"); @@ -79,9 +79,7 @@ describe("getOneaiJsonLd", () => { expect(product.name).toBe("OneAI"); expect(product.operatingSystem).toBe("On-premises, Web"); expect(product.image).toBe(`${siteUrl}${ONEAI_OG_IMAGE_PATH}`); - expect(product.offers.price).toBe("12400000"); - expect(product.offers.priceCurrency).toBe("IDR"); - expect(product.offers.description).toContain("before tax"); + expect(product).not.toHaveProperty("offers"); const faqPage = graph["@graph"][2]; expect(faqPage["@type"]).toBe("FAQPage"); @@ -97,7 +95,7 @@ describe("getOneaiJsonLd", () => { const breadcrumb = graph["@graph"][0]; expect(breadcrumb.itemListElement[0].name).toBe("Beranda"); - expect(graph["@graph"][1].offers.description).toContain("sebelum pajak"); + expect(graph["@graph"][1]).not.toHaveProperty("offers"); }); }); diff --git a/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.ts b/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.ts index 70b1553e..0ba21d3d 100644 --- a/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.ts +++ b/app/[lang]/(hyperjump)/oneai/get-oneai-json-ld.ts @@ -43,7 +43,7 @@ const ONEAI_OG_IMAGE_PATH = "/images/oneai/og.png"; * Returns structured data graphs for the OneAI landing page. * * @param options - Locale, URLs, and optional string loaders for DI - * @returns JSON-LD graph with SoftwareApplication, Offer, FAQPage, and BreadcrumbList + * @returns JSON-LD graph with SoftwareApplication, FAQPage, and BreadcrumbList */ export function getOneaiJsonLd({ lang, @@ -85,16 +85,6 @@ export function getOneaiJsonLd({ description, url: pageUrl, image: `${siteUrl}${ONEAI_OG_IMAGE_PATH}`, - offers: { - "@type": "Offer", - price: "12400000", - priceCurrency: "IDR", - description: - lang === "id" - ? "Paket hingga 40 pengguna, ditagih per kuartal, sebelum pajak" - : "Plan for up to 40 users, billed quarterly, before tax", - url: pageUrl - }, provider: { "@type": "Organization", name: "Hyperjump Technology", diff --git a/app/[lang]/(hyperjump)/oneai/page.tsx b/app/[lang]/(hyperjump)/oneai/page.tsx index fdc9d20b..6b63e786 100644 --- a/app/[lang]/(hyperjump)/oneai/page.tsx +++ b/app/[lang]/(hyperjump)/oneai/page.tsx @@ -60,19 +60,6 @@ import { oneaiPillars2Text, oneaiPillars2Title, oneaiPillarsLabel, - oneaiPricingAnnual, - oneaiPricingCompareItems0, - oneaiPricingCompareItems1, - oneaiPricingCompareItems2, - oneaiPricingCompareItems3, - oneaiPricingCompareKicker, - oneaiPricingCompareTitle, - oneaiPricingCta, - oneaiPricingIncludes, - oneaiPricingLabel, - oneaiPricingPrice, - oneaiPricingPriceUnit, - oneaiPricingQuarterly, oneaiStickyCta } from "@/locales/.generated/strings"; @@ -214,13 +201,6 @@ export default async function OneaiPage({ params }: OneaiPageProps) { text: oneaiCapabilities7Text(lang) } ]; - const compareItems = [ - oneaiPricingCompareItems0(lang), - oneaiPricingCompareItems1(lang), - oneaiPricingCompareItems2(lang), - oneaiPricingCompareItems3(lang) - ]; - return (