chore: import upstream snapshot with attribution
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
/**
|
||||
* @vitest-environment jsdom
|
||||
*/
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { parseXml } from '@/lib/pptx-renderer/parser/xml-parser'
|
||||
import { renderBackground } from '@/lib/pptx-renderer/renderer/background-renderer'
|
||||
import type { RenderContext } from '@/lib/pptx-renderer/renderer/render-context'
|
||||
|
||||
const EMPTY_NODE = parseXml(
|
||||
'<p:spTree xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" />'
|
||||
)
|
||||
|
||||
function createContext(backgroundXml: string): RenderContext {
|
||||
const background = parseXml(backgroundXml)
|
||||
const slide = {
|
||||
index: 0,
|
||||
nodes: [],
|
||||
background,
|
||||
layoutIndex: '',
|
||||
rels: new Map(),
|
||||
slidePath: 'ppt/slides/slide1.xml',
|
||||
showMasterSp: true,
|
||||
}
|
||||
|
||||
return {
|
||||
presentation: {
|
||||
width: 960,
|
||||
height: 540,
|
||||
slides: [slide],
|
||||
layouts: new Map(),
|
||||
masters: new Map(),
|
||||
themes: new Map(),
|
||||
slideToLayout: new Map(),
|
||||
layoutToMaster: new Map(),
|
||||
masterToTheme: new Map(),
|
||||
media: new Map(),
|
||||
charts: new Map(),
|
||||
isWps: false,
|
||||
},
|
||||
slide,
|
||||
theme: {
|
||||
colorScheme: new Map([['bg1', '000000']]),
|
||||
majorFont: { latin: 'Calibri', ea: '', cs: '' },
|
||||
minorFont: { latin: 'Calibri', ea: '', cs: '' },
|
||||
fillStyles: [],
|
||||
lineStyles: [],
|
||||
effectStyles: [],
|
||||
},
|
||||
master: {
|
||||
colorMap: new Map(),
|
||||
textStyles: {},
|
||||
placeholders: [],
|
||||
spTree: EMPTY_NODE,
|
||||
rels: new Map(),
|
||||
},
|
||||
layout: {
|
||||
placeholders: [],
|
||||
spTree: EMPTY_NODE,
|
||||
rels: new Map(),
|
||||
showMasterSp: true,
|
||||
},
|
||||
mediaUrlCache: new Map(),
|
||||
colorCache: new Map(),
|
||||
}
|
||||
}
|
||||
|
||||
describe('renderBackground', () => {
|
||||
it('renders bgRef colors that resolve to black after modifiers', () => {
|
||||
const ctx = createContext(`
|
||||
<p:bg xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
|
||||
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
|
||||
<p:bgRef idx="1001">
|
||||
<a:schemeClr val="bg1">
|
||||
<a:shade val="50000" />
|
||||
</a:schemeClr>
|
||||
</p:bgRef>
|
||||
</p:bg>
|
||||
`)
|
||||
const container = document.createElement('div')
|
||||
|
||||
renderBackground(ctx, container)
|
||||
|
||||
expect(container.style.backgroundColor).toBe('rgb(0, 0, 0)')
|
||||
})
|
||||
|
||||
it('keeps bgRef without a color node on the white fallback', () => {
|
||||
const ctx = createContext(`
|
||||
<p:bg xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
|
||||
<p:bgRef idx="1001" />
|
||||
</p:bg>
|
||||
`)
|
||||
const container = document.createElement('div')
|
||||
|
||||
renderBackground(ctx, container)
|
||||
|
||||
expect(container.style.backgroundColor).toBe('rgb(255, 255, 255)')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user