mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-03-17 14:02:43 +00:00
fix boolean filter with null filter value
This commit is contained in:
parent
f9da1fbe97
commit
2d5c85b601
4 changed files with 59 additions and 1 deletions
changelog/entries/unreleased/bug
web-frontend
modules/database
test/unit/database
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"type": "bug",
|
||||
"message": "Fixed boolean filter with null filter value",
|
||||
"issue_number": null,
|
||||
"bullet_points": [],
|
||||
"created_at": "2024-12-13"
|
||||
}
|
|
@ -13,7 +13,7 @@ export default {
|
|||
mixins: [viewFilter],
|
||||
computed: {
|
||||
copy() {
|
||||
const value = this.filter.value.toString().toLowerCase().trim()
|
||||
const value = (this.filter.value || '').toString().toLowerCase().trim()
|
||||
return trueValues.includes(value)
|
||||
},
|
||||
},
|
||||
|
|
|
@ -2750,6 +2750,9 @@ export class BooleanViewFilterType extends ViewFilterType {
|
|||
}
|
||||
|
||||
matches(rowValue, filterValue, field, fieldType) {
|
||||
if (filterValue === null) {
|
||||
filterValue = false
|
||||
}
|
||||
filterValue = trueValues.includes(
|
||||
filterValue.toString().toLowerCase().trim()
|
||||
)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { TestApp } from '@baserow/test/helpers/testApp'
|
||||
import moment from '@baserow/modules/core/moment'
|
||||
import {
|
||||
BooleanViewFilterType,
|
||||
DateAfterDaysAgoViewFilterType,
|
||||
DateAfterOrEqualViewFilterType,
|
||||
DateAfterTodayViewFilterType,
|
||||
|
@ -1873,6 +1874,44 @@ const formulaUrlFieldFilterNotEqualCases = [
|
|||
},
|
||||
]
|
||||
|
||||
const booleanFieldTests = [
|
||||
{
|
||||
filterValue: null,
|
||||
rowValue: null,
|
||||
expectedResult: true, // both will evaluate to false
|
||||
},
|
||||
{
|
||||
filterValue: null,
|
||||
rowValue: '',
|
||||
expectedResult: true, // both will evaluate to false
|
||||
},
|
||||
{
|
||||
filterValue: '',
|
||||
rowValue: '',
|
||||
expectedResult: true, // both will evaluate to false
|
||||
},
|
||||
{
|
||||
filterValue: false,
|
||||
rowValue: true,
|
||||
expectedResult: false,
|
||||
},
|
||||
{
|
||||
filterValue: '0',
|
||||
rowValue: '0',
|
||||
expectedResult: true,
|
||||
},
|
||||
{
|
||||
filterValue: '1',
|
||||
rowValue: '0',
|
||||
expectedResult: false,
|
||||
},
|
||||
{
|
||||
filterValue: '1',
|
||||
rowValue: '1',
|
||||
expectedResult: true,
|
||||
},
|
||||
]
|
||||
|
||||
describe('All Tests', () => {
|
||||
let testApp = null
|
||||
|
||||
|
@ -2671,4 +2710,13 @@ describe('All Tests', () => {
|
|||
'formulaUrlFieldFilters lenght is lower than test case %j',
|
||||
runUrlFormulafieldTest
|
||||
)
|
||||
|
||||
test.each(booleanFieldTests)('Boolean filter type tests %j', (values) => {
|
||||
const result = new BooleanViewFilterType().matches(
|
||||
values.rowValue,
|
||||
values.filterValue,
|
||||
{}
|
||||
)
|
||||
expect(result).toBe(values.expectedResult)
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue