| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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`)
- })
- })
|