mirror of
https://github.com/kremalicious/astro-redirect-from.git
synced 2024-11-22 01:47:01 +01:00
💯
This commit is contained in:
parent
1fc8d94084
commit
6d4898173a
@ -3,22 +3,22 @@ import astroRedirectFrom, { initPlugin } from '../src/index'
|
|||||||
import * as utils from '../src/utils'
|
import * as utils from '../src/utils'
|
||||||
import * as redirects from '../src/getRedirects'
|
import * as redirects from '../src/getRedirects'
|
||||||
|
|
||||||
|
const mockLogger = {
|
||||||
|
warn: vi.fn(),
|
||||||
|
info: vi.fn(),
|
||||||
|
error: vi.fn()
|
||||||
|
}
|
||||||
|
|
||||||
|
const hookOptionsMock = {
|
||||||
|
logger: mockLogger,
|
||||||
|
config: {
|
||||||
|
cacheDir: { pathname: './node_modules/.astro/' }
|
||||||
|
},
|
||||||
|
command: 'dev',
|
||||||
|
updateConfig: vi.fn()
|
||||||
|
}
|
||||||
|
|
||||||
describe('initPlugin', () => {
|
describe('initPlugin', () => {
|
||||||
const mockLogger = {
|
|
||||||
warn: vi.fn(),
|
|
||||||
info: vi.fn(),
|
|
||||||
error: vi.fn()
|
|
||||||
}
|
|
||||||
|
|
||||||
const hookOptionsMock = {
|
|
||||||
logger: mockLogger,
|
|
||||||
config: {
|
|
||||||
cacheDir: { pathname: './node_modules/.astro/' }
|
|
||||||
},
|
|
||||||
command: 'dev',
|
|
||||||
updateConfig: vi.fn()
|
|
||||||
}
|
|
||||||
|
|
||||||
it('should handle no markdown files scenario', async () => {
|
it('should handle no markdown files scenario', async () => {
|
||||||
const getMarkdownFilesSpy = vi.spyOn(utils, 'getMarkdownFiles')
|
const getMarkdownFilesSpy = vi.spyOn(utils, 'getMarkdownFiles')
|
||||||
getMarkdownFilesSpy.mockResolvedValue([])
|
getMarkdownFilesSpy.mockResolvedValue([])
|
||||||
@ -62,6 +62,19 @@ describe('initPlugin', () => {
|
|||||||
expect(mockLogger.info).toBeCalledWith('Added 1 redirects to Astro config')
|
expect(mockLogger.info).toBeCalledWith('Added 1 redirects to Astro config')
|
||||||
expect(writeJsonSpy).toBeCalled()
|
expect(writeJsonSpy).toBeCalled()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should handle errors and log them', async () => {
|
||||||
|
// Make getMarkdownFiles throw an error
|
||||||
|
vi.spyOn(utils, 'getMarkdownFiles')
|
||||||
|
const getMarkdownFilesSpy = vi.spyOn(utils, 'getMarkdownFiles')
|
||||||
|
getMarkdownFilesSpy.mockImplementation(async () => {
|
||||||
|
throw new Error('Mocked error')
|
||||||
|
})
|
||||||
|
|
||||||
|
await initPlugin({ ...hookOptionsMock, logger: mockLogger } as any)
|
||||||
|
|
||||||
|
expect(mockLogger.error).toHaveBeenCalledWith('Mocked error')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('astroRedirectFrom', () => {
|
describe('astroRedirectFrom', () => {
|
||||||
@ -72,4 +85,24 @@ describe('astroRedirectFrom', () => {
|
|||||||
expect(result).toHaveProperty('hooks')
|
expect(result).toHaveProperty('hooks')
|
||||||
expect(result.hooks).toHaveProperty('astro:config:setup')
|
expect(result.hooks).toHaveProperty('astro:config:setup')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should call initPlugin when astro:config:setup hook is invoked', async () => {
|
||||||
|
const getMarkdownFilesSpy = vi.spyOn(utils, 'getMarkdownFiles')
|
||||||
|
getMarkdownFilesSpy.mockResolvedValue(['test.md', 'test2.md'])
|
||||||
|
|
||||||
|
const getRedirectsSpy = vi.spyOn(redirects, 'getRedirects')
|
||||||
|
getRedirectsSpy.mockResolvedValue({ '/old': '/new' })
|
||||||
|
|
||||||
|
const writeJsonSpy = vi.spyOn(utils, 'writeJson')
|
||||||
|
writeJsonSpy.mockImplementation(() => Promise.resolve())
|
||||||
|
|
||||||
|
const integration = astroRedirectFrom()
|
||||||
|
|
||||||
|
expect(integration.hooks).toHaveProperty('astro:config:setup')
|
||||||
|
|
||||||
|
// Invoke the hook
|
||||||
|
if (integration.hooks['astro:config:setup']) {
|
||||||
|
await integration.hooks['astro:config:setup'](hookOptionsMock as any)
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user