|
1 | 1 | importtype{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 | constposthogAutoInject={ |
@@ -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