Files
supabase/apps/studio/components/interfaces/Reports/Reports.constants.test.ts

107 lines
2.7 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { generateRegexpWhere } from './Reports.constants'
import type { ReportFilterItem } from './Reports.types'
describe('generateRegexpWhere', () => {
it('should return empty string when no filters provided', () => {
const result = generateRegexpWhere([])
expect(result).toBe('')
})
it('should generate WHERE clause for single filter', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '/api/users',
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe("WHERE request.path = '/api/users'")
})
it('should generate AND clause for single filter with prepend=false', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '/api/users',
compare: 'is',
},
]
const result = generateRegexpWhere(filters, false)
expect(result).toBe("AND request.path = '/api/users'")
})
it('should handle different comparison operators', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '/api/*',
compare: 'matches',
},
{
key: 'response.status_code',
value: 404,
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe(
"WHERE REGEXP_CONTAINS(request.path, '/api/*') AND response.status_code = 404"
)
})
it('should handle values with quotes', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '"/api/users"',
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe(`WHERE request.path = "/api/users"`)
})
it('should handle values without quotes', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '/api/users',
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe("WHERE request.path = '/api/users'")
})
it('should handle values with quotes and lowercase', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.path',
value: '"/Api/Users"',
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe(`WHERE request.path = "/api/users"`)
})
it('should handle numbers', () => {
const filters: ReportFilterItem[] = [
{
key: 'request.status_code',
value: 200,
compare: 'is',
},
]
const result = generateRegexpWhere(filters, true)
expect(result).toBe(`WHERE request.status_code = 200`)
})
})