test: stabilize suite and add coverage heatmap (#373)
* test: stabilize suite and add coverage heatmap * ci: run full bun test suite in pr checks
This commit is contained in:
@@ -1,31 +1,60 @@
|
||||
import { afterEach, expect, test } from 'bun:test'
|
||||
import { afterEach, beforeEach, expect, mock, test } from 'bun:test'
|
||||
|
||||
import {
|
||||
clearGeminiAccessToken,
|
||||
readGeminiAccessToken,
|
||||
saveGeminiAccessToken,
|
||||
} from './geminiCredentials.ts'
|
||||
type MockStorageData = Record<string, unknown>
|
||||
|
||||
const originalToken = process.env.GEMINI_ACCESS_TOKEN
|
||||
const originalEnv = { ...process.env }
|
||||
let storageState: MockStorageData = {}
|
||||
|
||||
afterEach(() => {
|
||||
if (originalToken === undefined) {
|
||||
delete process.env.GEMINI_ACCESS_TOKEN
|
||||
} else {
|
||||
process.env.GEMINI_ACCESS_TOKEN = originalToken
|
||||
}
|
||||
clearGeminiAccessToken()
|
||||
async function importFreshModule() {
|
||||
mock.module('./secureStorage/index.js', () => ({
|
||||
getSecureStorage: () => ({
|
||||
name: 'mock-secure-storage',
|
||||
read: () => storageState,
|
||||
readAsync: async () => storageState,
|
||||
update: (next: MockStorageData) => {
|
||||
storageState = next
|
||||
return { success: true }
|
||||
},
|
||||
delete: () => {
|
||||
storageState = {}
|
||||
return true
|
||||
},
|
||||
}),
|
||||
}))
|
||||
|
||||
return import(`./geminiCredentials.ts?ts=${Date.now()}-${Math.random()}`)
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
process.env = { ...originalEnv }
|
||||
storageState = {}
|
||||
})
|
||||
|
||||
test('saveGeminiAccessToken stores and reads back the token', () => {
|
||||
afterEach(() => {
|
||||
process.env = { ...originalEnv }
|
||||
storageState = {}
|
||||
mock.restore()
|
||||
})
|
||||
|
||||
test('saveGeminiAccessToken stores and reads back the token', async () => {
|
||||
const {
|
||||
readGeminiAccessToken,
|
||||
saveGeminiAccessToken,
|
||||
} = await importFreshModule()
|
||||
|
||||
const result = saveGeminiAccessToken('token-123')
|
||||
expect(result.success).toBe(true)
|
||||
expect(readGeminiAccessToken()).toBe('token-123')
|
||||
})
|
||||
|
||||
test('clearGeminiAccessToken removes the stored token', () => {
|
||||
test('clearGeminiAccessToken removes the stored token', async () => {
|
||||
const {
|
||||
clearGeminiAccessToken,
|
||||
readGeminiAccessToken,
|
||||
saveGeminiAccessToken,
|
||||
} = await importFreshModule()
|
||||
|
||||
expect(saveGeminiAccessToken('token-123').success).toBe(true)
|
||||
expect(clearGeminiAccessToken().success).toBe(true)
|
||||
expect(readGeminiAccessToken()).toBeUndefined()
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user