(t *testing.T)
| 297 | } |
| 298 | |
| 299 | func TestSplitReqConditionGroups(t *testing.T) { |
| 300 | testCases := []struct { |
| 301 | name, query string |
| 302 | expected [][]Condition |
| 303 | }{ |
| 304 | { |
| 305 | name: "simple no OR query", |
| 306 | query: `{ .attr = "123" }`, |
| 307 | expected: [][]Condition{ |
| 308 | { |
| 309 | newCondition(NewAttribute("attr"), OpEqual, NewStaticString("123")), |
| 310 | }, |
| 311 | }, |
| 312 | }, |
| 313 | { |
| 314 | name: "opnone query", |
| 315 | query: `{.attr}`, |
| 316 | expected: nil, |
| 317 | }, |
| 318 | { |
| 319 | name: "one OR is opnone query", |
| 320 | query: `{.attr || .foo = "bar" }`, |
| 321 | expected: nil, |
| 322 | }, |
| 323 | { |
| 324 | name: "three single condition ORs", |
| 325 | query: `{ .attr = "123" || .service = "b" || .env = "staging" }`, |
| 326 | expected: [][]Condition{ |
| 327 | { |
| 328 | newCondition(NewAttribute("attr"), OpEqual, NewStaticString("123")), |
| 329 | }, |
| 330 | { |
| 331 | newCondition(NewAttribute("service"), OpEqual, NewStaticString("b")), |
| 332 | }, |
| 333 | { |
| 334 | newCondition(NewAttribute("env"), OpEqual, NewStaticString("staging")), |
| 335 | }, |
| 336 | }, |
| 337 | }, |
| 338 | { |
| 339 | name: "one double condition ORs with two single condition ORs", |
| 340 | query: `{ (.attr = "123" && .foo = "bar") || .service = "b" || .env = "staging" }`, |
| 341 | expected: [][]Condition{ |
| 342 | { |
| 343 | newCondition(NewAttribute("attr"), OpEqual, NewStaticString("123")), |
| 344 | newCondition(NewAttribute("foo"), OpEqual, NewStaticString("bar")), |
| 345 | }, |
| 346 | { |
| 347 | newCondition(NewAttribute("service"), OpEqual, NewStaticString("b")), |
| 348 | }, |
| 349 | { |
| 350 | newCondition(NewAttribute("env"), OpEqual, NewStaticString("staging")), |
| 351 | }, |
| 352 | }, |
| 353 | }, |
| 354 | { |
| 355 | name: "one single condition AND three single condition ORs", |
| 356 | query: `{ name = "abc" && (.attr = "123" || .service = "b" || .env = "staging") }`, |
nothing calls this directly
no test coverage detected