mirror of
https://github.com/supabase/supabase.git
synced 2026-10-10 20:05:06 +03:00
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
107 lines
2.7 KiB
TypeScript
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`)
|
|
})
|
|
})
|