1
0
mirror of https://github.com/kremalicious/astro-redirect-from.git synced 2024-11-22 01:47:01 +01:00
This commit is contained in:
Matthias Kretschmann 2023-09-24 13:15:23 +01:00
parent 1fc8d94084
commit 6d4898173a
Signed by: m
GPG Key ID: 606EEEF3C479A91F

View File

@ -3,22 +3,22 @@ import astroRedirectFrom, { initPlugin } from '../src/index'
import * as utils from '../src/utils'
import * as redirects from '../src/getRedirects'
describe('initPlugin', () => {
const mockLogger = {
const mockLogger = {
warn: vi.fn(),
info: vi.fn(),
error: vi.fn()
}
}
const hookOptionsMock = {
const hookOptionsMock = {
logger: mockLogger,
config: {
cacheDir: { pathname: './node_modules/.astro/' }
},
command: 'dev',
updateConfig: vi.fn()
}
}
describe('initPlugin', () => {
it('should handle no markdown files scenario', async () => {
const getMarkdownFilesSpy = vi.spyOn(utils, 'getMarkdownFiles')
getMarkdownFilesSpy.mockResolvedValue([])
@ -62,6 +62,19 @@ describe('initPlugin', () => {
expect(mockLogger.info).toBeCalledWith('Added 1 redirects to Astro config')
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', () => {
@ -72,4 +85,24 @@ describe('astroRedirectFrom', () => {
expect(result).toHaveProperty('hooks')
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)
}
})
})