Merge branch 'refactor2'
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { formatPriceRub } from '../format-price'
|
||||
|
||||
describe('formatPriceRub', () => {
|
||||
it('formats cents to rubles', () => {
|
||||
const result = formatPriceRub(10000)
|
||||
expect(result).toContain('100')
|
||||
expect(result).toContain('₽')
|
||||
})
|
||||
|
||||
it('formats zero', () => {
|
||||
const result = formatPriceRub(0)
|
||||
expect(result).toContain('0')
|
||||
expect(result).toContain('₽')
|
||||
})
|
||||
|
||||
it('rounds to integer rubles', () => {
|
||||
const result = formatPriceRub(10050)
|
||||
expect(result).toContain('101')
|
||||
expect(result).toContain('₽')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,20 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { getErrorMessage } from '../get-error-message'
|
||||
|
||||
describe('getErrorMessage', () => {
|
||||
it('returns error message for Error instance', () => {
|
||||
expect(getErrorMessage(new Error('test error'))).toBe('test error')
|
||||
})
|
||||
|
||||
it('returns fallback for non-Error', () => {
|
||||
expect(getErrorMessage('string error')).toBe('Произошла ошибка')
|
||||
})
|
||||
|
||||
it('returns custom fallback when provided', () => {
|
||||
expect(getErrorMessage(null, 'custom')).toBe('custom')
|
||||
})
|
||||
|
||||
it('returns fallback for Error with empty message', () => {
|
||||
expect(getErrorMessage(new Error(''), 'empty')).toBe('empty')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,33 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { groupOrdersByStatus } from '../group-orders-by-status'
|
||||
|
||||
const STATUSES = ['PENDING', 'PAID', 'DONE'] as const
|
||||
|
||||
describe('groupOrdersByStatus', () => {
|
||||
it('groups and sorts orders by status', () => {
|
||||
const orders = [
|
||||
{ status: 'PAID', createdAt: '2024-01-02T10:00:00Z' },
|
||||
{ status: 'PENDING', createdAt: '2024-01-01T10:00:00Z' },
|
||||
{ status: 'PAID', createdAt: '2024-01-03T10:00:00Z' },
|
||||
]
|
||||
|
||||
const result = groupOrdersByStatus(orders, STATUSES)
|
||||
|
||||
expect(result).toHaveLength(2)
|
||||
expect(result[0].status).toBe('PENDING')
|
||||
expect(result[1].status).toBe('PAID')
|
||||
expect(result[1].items).toHaveLength(2)
|
||||
expect(result[1].items[0].createdAt).toBe('2024-01-03T10:00:00Z')
|
||||
})
|
||||
|
||||
it('returns empty array for no matching orders', () => {
|
||||
const result = groupOrdersByStatus([], STATUSES)
|
||||
expect(result).toHaveLength(0)
|
||||
})
|
||||
|
||||
it('ignores unknown statuses', () => {
|
||||
const orders = [{ status: 'UNKNOWN', createdAt: '2024-01-01T10:00:00Z' }]
|
||||
const result = groupOrdersByStatus(orders, STATUSES)
|
||||
expect(result).toHaveLength(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user