40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { Result } from '../../src/lib/utilities/result'
|
|
|
|
describe('Result', () => {
|
|
it('should create a success result correctly', () => {
|
|
const successValue = 'Success value'
|
|
const result = Result.ok(successValue)
|
|
|
|
expect(result.isOk()).toBe(true)
|
|
expect(result.isErr()).toBe(false)
|
|
expect(result.inner).toBe(successValue)
|
|
})
|
|
|
|
it('should create an error result correctly', () => {
|
|
const errorMessage = 'Error message'
|
|
const result = Result.err(errorMessage)
|
|
|
|
expect(result.isOk()).toBe(false)
|
|
expect(result.isErr()).toBe(true)
|
|
expect(result.inner).toBe(errorMessage)
|
|
})
|
|
|
|
it('should type guard success and error results correctly', () => {
|
|
const successResult = Result.ok(123)
|
|
const errorResult = Result.err('Error')
|
|
|
|
if (successResult.isOk()) {
|
|
expect(typeof successResult.inner).toBe('number')
|
|
} else {
|
|
throw new Error('Expected successResult to be ok')
|
|
}
|
|
|
|
if (errorResult.isErr()) {
|
|
expect(typeof errorResult.inner).toBe('string')
|
|
} else {
|
|
throw new Error('Expected errorResult to be fail')
|
|
}
|
|
})
|
|
})
|