pengzhanbo 1365c83109
feat: add vuepress-plugin-replace-assets support, close #545 (#549)
* feat: add `vuepress-plugin-replace-assets` support, close #545
2025-04-07 07:41:23 +08:00

44 lines
2.0 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { createAssetPattern, isHTMLRequest, isNonJsRequest, normalizeUrl } from '../src/unplugin/utils.js'
describe('plugin-replace-assets > utils', () => {
it('createAssetPattern', () => {
expect(createAssetPattern('/[^/]').test(`'/images/foo.jpg'`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`"/images/foo.jpg"`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`(/images/foo.jpg)`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`('/images/foo.jpg')`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`("/images/foo.jpg")`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`"/images/foo.jpg?a=1"`)).toBe(true)
expect(createAssetPattern('/[^/]').test(`'https://example.com/images/foo.jpg'`)).toBe(false)
expect(createAssetPattern('/[^/]').test(`"./images/foo.jpg"`)).toBe(false)
expect(createAssetPattern('/[^/]').test(`"images/foo.jpg"`)).toBe(false)
})
it('isHTMLRequest', () => {
expect(isHTMLRequest('.html')).toBe(true)
expect(isHTMLRequest('.htm')).toBe(true)
expect(isHTMLRequest('.svg')).toBe(false)
expect(isHTMLRequest('.png')).toBe(false)
expect(isHTMLRequest('')).toBe(false)
})
it('isNonJsRequest', () => {
// everything request is js, but json is not
expect(isNonJsRequest('.json')).toBe(true)
expect(isNonJsRequest('.html')).toBe(false)
expect(isNonJsRequest('.htm')).toBe(false)
expect(isNonJsRequest('.svg')).toBe(false)
expect(isNonJsRequest('.png')).toBe(false)
expect(isNonJsRequest('')).toBe(false)
})
it('normalizeUrl', () => {
expect(normalizeUrl('')).toBe('')
expect(normalizeUrl('/images/foo.jpg')).toBe('/images/foo.jpg')
expect(normalizeUrl('/images/foo.jpg?a=1')).toBe('/images/foo.jpg?a=1')
expect(normalizeUrl('/images/foo.jpg', 'https://example.com/')).toBe('https://example.com/images/foo.jpg')
expect(normalizeUrl('/images/foo.jpg?a=1', 'https://example.com/')).toBe('https://example.com/images/foo.jpg?a=1')
})
})