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 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', () => {
|
||||
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 () => {
|
||||
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)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user