Test both allOr and allAnd

This commit is contained in:
Adria Navarro 2024-08-21 12:14:40 +02:00
parent 53e01aa241
commit c5476ce3b3
1 changed files with 75 additions and 66 deletions

View File

@ -1493,82 +1493,90 @@ describe.each([
}) })
isLucene && isLucene &&
it("in lucene, cannot override a view filter", async () => { it.each([true, false])(
await config.api.row.save(table._id!, { "in lucene, cannot override a view filter",
one: "foo", async allOr => {
two: "bar", await config.api.row.save(table._id!, {
}) one: "foo",
const two = await config.api.row.save(table._id!, { two: "bar",
one: "foo2", })
two: "bar2", const two = await config.api.row.save(table._id!, {
}) one: "foo2",
two: "bar2",
})
const view = await config.api.viewV2.create({ const view = await config.api.viewV2.create({
tableId: table._id!, tableId: table._id!,
name: generator.guid(), name: generator.guid(),
query: [ query: [
{ {
operator: BasicOperator.EQUAL, operator: BasicOperator.EQUAL,
field: "two", field: "two",
value: "bar2", value: "bar2",
},
],
schema: {
id: { visible: true },
one: { visible: false },
two: { visible: true },
}, },
], })
schema: {
id: { visible: true },
one: { visible: false },
two: { visible: true },
},
})
const response = await config.api.viewV2.search(view.id, { const response = await config.api.viewV2.search(view.id, {
query: { query: {
equal: { allOr,
two: "bar", equal: {
two: "bar",
},
}, },
}, })
}) expect(response.rows).toHaveLength(1)
expect(response.rows).toHaveLength(1) expect(response.rows).toEqual([
expect(response.rows).toEqual([ expect.objectContaining({ _id: two._id }),
expect.objectContaining({ _id: two._id }), ])
]) }
}) )
!isLucene && !isLucene &&
it("can filter a view without a view filter", async () => { it.each([true, false])(
const one = await config.api.row.save(table._id!, { "can filter a view without a view filter",
one: "foo", async allOr => {
two: "bar", const one = await config.api.row.save(table._id!, {
}) one: "foo",
await config.api.row.save(table._id!, { two: "bar",
one: "foo2", })
two: "bar2", await config.api.row.save(table._id!, {
}) one: "foo2",
two: "bar2",
})
const view = await config.api.viewV2.create({ const view = await config.api.viewV2.create({
tableId: table._id!, tableId: table._id!,
name: generator.guid(), name: generator.guid(),
schema: { schema: {
id: { visible: true }, id: { visible: true },
one: { visible: false }, one: { visible: false },
two: { visible: true }, two: { visible: true },
},
})
const response = await config.api.viewV2.search(view.id, {
query: {
equal: {
two: "bar",
}, },
}, })
})
expect(response.rows).toHaveLength(1) const response = await config.api.viewV2.search(view.id, {
expect(response.rows).toEqual([ query: {
expect.objectContaining({ _id: one._id }), allOr,
]) equal: {
}) two: "bar",
},
},
})
expect(response.rows).toHaveLength(1)
expect(response.rows).toEqual([
expect.objectContaining({ _id: one._id }),
])
}
)
!isLucene && !isLucene &&
it("cannot bypass a view filter", async () => { it.each([true, false])("cannot bypass a view filter", async allOr => {
await config.api.row.save(table._id!, { await config.api.row.save(table._id!, {
one: "foo", one: "foo",
two: "bar", two: "bar",
@ -1597,6 +1605,7 @@ describe.each([
const response = await config.api.viewV2.search(view.id, { const response = await config.api.viewV2.search(view.id, {
query: { query: {
allOr,
equal: { equal: {
two: "bar", two: "bar",
}, },