Merged PR 195262: Support empty advanced filters

Support empty advanced filters
This commit is contained in:
Shahak Yosef 2021-10-13 09:36:29 +00:00
Родитель 8384e27527
Коммит 5f18610ae1
3 изменённых файлов: 24 добавлений и 5 удалений

Просмотреть файл

@ -475,7 +475,7 @@ export interface IAdvancedFilterCondition {
export interface IAdvancedFilter extends IFilter { export interface IAdvancedFilter extends IFilter {
logicalOperator: AdvancedFilterLogicalOperators; logicalOperator: AdvancedFilterLogicalOperators;
conditions: IAdvancedFilterCondition[]; conditions?: IAdvancedFilterCondition[];
} }
export enum FilterType { export enum FilterType {
@ -846,9 +846,6 @@ export class AdvancedFilter extends Filter {
extractedConditions = (conditions as IAdvancedFilterCondition[]); extractedConditions = (conditions as IAdvancedFilterCondition[]);
} }
if (extractedConditions.length === 0) {
throw new Error(`conditions must be a non-empty array. You passed: ${conditions}`);
}
if (extractedConditions.length > 2) { if (extractedConditions.length > 2) {
throw new Error(`AdvancedFilters may not have more than two conditions. You passed: ${conditions.length}`); throw new Error(`AdvancedFilters may not have more than two conditions. You passed: ${conditions.length}`);
} }

Просмотреть файл

@ -246,7 +246,7 @@ export class AdvancedFilterValidator extends FilterValidatorBase {
}, },
{ {
field: "conditions", field: "conditions",
validators: [Validators.fieldRequiredValidator, Validators.filterConditionsValidator] validators: [Validators.filterConditionsValidator]
}, },
{ {
field: "filterType", field: "filterType",

Просмотреть файл

@ -3159,6 +3159,28 @@ describe("Unit | Filters", () => {
expect(filter.toJSON()).toEqual(expectedFilter); expect(filter.toJSON()).toEqual(expectedFilter);
}); });
it("should output the correct json when toJSON is called for empty advanced filter", () => {
// Arrange
const expectedFilter: models.IAdvancedFilter = {
$schema: "http://powerbi.com/product/schema#advanced",
target: {
table: "a",
column: "b"
},
conditions: [],
logicalOperator: "And",
filterType: models.FilterType.Advanced
};
// Act
const filter = new models.AdvancedFilter(
expectedFilter.target as models.IFilterTarget,
expectedFilter.logicalOperator);
// Assert
expect(filter.toJSON()).toEqual(expectedFilter);
});
it("can be constructed using either array form or individual arguments", () => { it("can be constructed using either array form or individual arguments", () => {
// Arrange // Arrange
const expectedFilter: models.IAdvancedFilter = { const expectedFilter: models.IAdvancedFilter = {