|
1 | 1 | import type { NuxtConfigScriptRegistry } from '../../packages/script/src/runtime/types' |
2 | 2 | import { describe, expect, it } from 'vitest' |
3 | | -import { applyAutoInject, resolveConfiguredProxyDomains } from '../../packages/script/src/module' |
| 3 | +import { applyAutoInject, findMissingRequiredFields, resolveConfiguredProxyDomains } from '../../packages/script/src/module' |
4 | 4 |
|
5 | 5 | describe('applyAutoInject', () => { |
6 | 6 | const posthogAutoInject = { |
@@ -149,3 +149,27 @@ describe('resolveConfiguredProxyDomains', () => { |
149 | 149 | })).toEqual(['cdn.analytics.example.com', 'events.analytics.example.com']) |
150 | 150 | }) |
151 | 151 | }) |
| 152 | + |
| 153 | +describe('findMissingRequiredFields', () => { |
| 154 | + it('flags fields missing from both raw input and merged runtimeConfig', () => { |
| 155 | + expect(findMissingRequiredFields(['id'], {}, undefined)).toEqual(['id']) |
| 156 | + }) |
| 157 | + |
| 158 | + it('treats fields satisfied via raw input as present', () => { |
| 159 | + expect(findMissingRequiredFields(['id'], { id: 'G-123' }, undefined)).toEqual([]) |
| 160 | + }) |
| 161 | + |
| 162 | + it('treats fields supplied only via merged runtimeConfig.public.scripts as present', () => { |
| 163 | + // Reproduces #761: id arrives via NUXT_PUBLIC_SCRIPTS_* / runtimeConfig and is |
| 164 | + // merged into runtimeConfig.public.scripts before validation runs. |
| 165 | + expect(findMissingRequiredFields(['id'], {}, { id: 'G-123' })).toEqual([]) |
| 166 | + }) |
| 167 | + |
| 168 | + it('ignores `scriptOptions` carried on the merged entry', () => { |
| 169 | + expect(findMissingRequiredFields(['id'], {}, { scriptOptions: { bundle: true } })).toEqual(['id']) |
| 170 | + }) |
| 171 | + |
| 172 | + it('returns only the still-missing subset', () => { |
| 173 | + expect(findMissingRequiredFields(['id', 'apiKey'], {}, { id: 'G-123' })).toEqual(['apiKey']) |
| 174 | + }) |
| 175 | +}) |
0 commit comments