mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 00:02:31 +00:00
fix(editor): keep reconciliation cache contract
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
// @vitest-environment happy-dom
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import * as htmlValidation from './markdown-rich-html-validation'
|
||||
import * as roundTrip from './markdown-round-trip'
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
||||
import { i18n } from '@/i18n/i18n'
|
||||
import { getMarkdownRichModeEligibility } from './markdown-rich-mode'
|
||||
import {
|
||||
@@ -75,21 +73,6 @@ describe('getCachedMarkdownRichModeEligibility', () => {
|
||||
)
|
||||
})
|
||||
|
||||
it('supports a conservative source-mode decision without HTML round trips', () => {
|
||||
const htmlValidationSpy = vi.spyOn(htmlValidation, 'getRichMarkdownHtmlValidationOutput')
|
||||
const roundTripSpy = vi.spyOn(roundTrip, 'getRichMarkdownRoundTripOutput')
|
||||
|
||||
const result = getCachedMarkdownRichModeEligibility({
|
||||
content: '<span>edited</span>\n',
|
||||
sizeOverridden: false,
|
||||
validateHtmlRoundTrip: false
|
||||
})
|
||||
|
||||
expect(result.unsupportedMessage).not.toBeNull()
|
||||
expect(htmlValidationSpy).not.toHaveBeenCalled()
|
||||
expect(roundTripSpy).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('stays correct once the corpus exceeds the cache capacity', () => {
|
||||
const expected = CORPUS.map(({ content }) =>
|
||||
getMarkdownRichModeEligibility({ content, sizeOverridden: false })
|
||||
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
type EligibilityCacheEntry = {
|
||||
content: string
|
||||
sizeOverridden: boolean
|
||||
validateHtmlRoundTrip: boolean
|
||||
decision: MarkdownRichModeEligibilityDecision
|
||||
}
|
||||
|
||||
@@ -37,7 +36,6 @@ const entries: EligibilityCacheEntry[] = []
|
||||
export function getCachedMarkdownRichModeEligibility(params: {
|
||||
content: string
|
||||
sizeOverridden: boolean
|
||||
validateHtmlRoundTrip?: boolean
|
||||
}): MarkdownRichModeEligibility {
|
||||
const decision = getCachedMarkdownRichModeEligibilityDecision(params)
|
||||
return {
|
||||
@@ -49,16 +47,11 @@ export function getCachedMarkdownRichModeEligibility(params: {
|
||||
function getCachedMarkdownRichModeEligibilityDecision(params: {
|
||||
content: string
|
||||
sizeOverridden: boolean
|
||||
validateHtmlRoundTrip?: boolean
|
||||
}): MarkdownRichModeEligibilityDecision {
|
||||
const { content, sizeOverridden, validateHtmlRoundTrip = true } = params
|
||||
const { content, sizeOverridden } = params
|
||||
for (let index = 0; index < entries.length; index += 1) {
|
||||
const entry = entries[index]
|
||||
if (
|
||||
entry.sizeOverridden !== sizeOverridden ||
|
||||
entry.validateHtmlRoundTrip !== validateHtmlRoundTrip ||
|
||||
entry.content !== content
|
||||
) {
|
||||
if (entry.sizeOverridden !== sizeOverridden || entry.content !== content) {
|
||||
continue
|
||||
}
|
||||
if (index > 0) {
|
||||
@@ -68,12 +61,8 @@ function getCachedMarkdownRichModeEligibilityDecision(params: {
|
||||
return entry.decision
|
||||
}
|
||||
|
||||
const decision = getMarkdownRichModeEligibilityDecision({
|
||||
content,
|
||||
sizeOverridden,
|
||||
validateHtmlRoundTrip
|
||||
})
|
||||
entries.unshift({ content, sizeOverridden, validateHtmlRoundTrip, decision })
|
||||
const decision = getMarkdownRichModeEligibilityDecision({ content, sizeOverridden })
|
||||
entries.unshift({ content, sizeOverridden, decision })
|
||||
if (entries.length > MAX_ENTRIES) {
|
||||
entries.length = MAX_ENTRIES
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user