* feat: Multiselect default Check * Fix: failing tests * fix: review issues * fix: build errors * fix: review issues * fix: unused vars * fix: failing tests
310 lines
9.6 KiB
JavaScript
310 lines
9.6 KiB
JavaScript
import _ from "lodash";
|
|
import derivedProperty from "./derived";
|
|
|
|
describe("Derived property - MultiSelect Widget", () => {
|
|
describe("#getIsValid", () => {
|
|
it("return true when isRequired false and selectedOptionValues is empty string", () => {
|
|
const isValid = derivedProperty.getIsValid(
|
|
{
|
|
isRequired: false,
|
|
selectedOptionValues: [""],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(isValid).toBeTruthy();
|
|
});
|
|
|
|
it("return true when isRequired true and selectedOptionValues is not empty", () => {
|
|
const isValid = derivedProperty.getIsValid(
|
|
{
|
|
selectedOptionValues: ["GREEN"],
|
|
isRequired: true,
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(isValid).toBeTruthy();
|
|
});
|
|
|
|
it("return false when isRequired true and selectedOptionValues is empty", () => {
|
|
const isValid = derivedProperty.getIsValid(
|
|
{
|
|
selectedOptionValues: [],
|
|
isRequired: true,
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(isValid).toBeFalsy();
|
|
});
|
|
});
|
|
|
|
describe("#getSelectedOptionValues", () => {
|
|
it("selectedOptionValues should have a value if defaultValue(String) is in option", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
selectedOptions: ["GREEN"],
|
|
serverSideFiltering: false,
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual(["GREEN"]);
|
|
});
|
|
|
|
it("selectedOptionValues should have a value if defaultValue(Object) is in option", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: false,
|
|
selectedOptions: [{ label: "Green", value: "GREEN" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual(["GREEN"]);
|
|
});
|
|
|
|
it("selectedOptionValues should have only values present in the options; defaultValue(Object), serverSideFiltering(false)", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: false,
|
|
selectedOptions: [
|
|
{ label: "Yellow", value: "YELLOW" },
|
|
{ label: "Green", value: "GREEN" },
|
|
],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual(["GREEN"]);
|
|
});
|
|
it("selectedOptionValues should have only values present in the options; defaultValue(Object), serverSideFiltering(false)", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: false,
|
|
selectedOptions: [{ label: "Yellow", value: "YELLOW" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual([]);
|
|
});
|
|
it("selectedOptionValues should have only values present in the options; defaultValue(String), serverSideFiltering(false)", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: false,
|
|
selectedOptions: ["YELLOW"],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual([]);
|
|
});
|
|
it("selectedOptionValues should have only values present in the options; defaultValue(Object), serverSideFiltering(true)", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: true,
|
|
selectedOptions: [{ label: "Yellow", value: "YELLOW" }],
|
|
isDirty: false,
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual([]);
|
|
});
|
|
it("selectedOptionValues should have only values present in the options; defaultValue(String), serverSideFiltering(true)", () => {
|
|
const selectedOptionValues = derivedProperty.getSelectedOptionValues(
|
|
{
|
|
serverSideFiltering: true,
|
|
selectedOptions: ["YELLOW"],
|
|
isDirty: false,
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionValues).toStrictEqual([]);
|
|
});
|
|
});
|
|
|
|
describe("#getSelectedOptionLabels", () => {
|
|
it("selectedOptionLabels should have a value if defaultValue(String) is in option", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: ["GREEN"],
|
|
serverSideFiltering: false,
|
|
selectedOptions: ["GREEN"],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual(["Green"]);
|
|
});
|
|
|
|
it("selectedOptionLabels should have a value if defaultValue(Object) is in option", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: ["GREEN"],
|
|
serverSideFiltering: false,
|
|
selectedOptions: [{ label: "Green", value: "GREEN" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual(["Green"]);
|
|
});
|
|
|
|
it("selectedOptionLabels should have it's value from the options and not from defaultValue(Object)", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: ["GREEN"],
|
|
serverSideFiltering: false,
|
|
selectedOptions: [{ label: "Greenish", value: "GREEN" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual(["Green"]);
|
|
});
|
|
|
|
it("selectedOptionLabels should not have a value if defaultValue(Object) is not in option and serverSideFiltering is false", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: [],
|
|
serverSideFiltering: false,
|
|
selectedOptions: [{ label: "Yellow", value: "Yellow" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual([]);
|
|
});
|
|
|
|
it("selectedOptionLabels should have a value if defaultValue(object) is not in option and serverSideFiltering is true", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: [],
|
|
serverSideFiltering: false,
|
|
selectedOptions: ["YELLOW"],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual([]);
|
|
});
|
|
|
|
it("selectedOptionLabels should have it's value from the options and not from defaultValue(Object) and serverSideFiltering is true", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: ["GREEN"],
|
|
serverSideFiltering: true,
|
|
selectedOptions: [{ label: "Greenish", value: "GREEN" }],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual(["Green"]);
|
|
});
|
|
|
|
it("selectedOptionLabels should have it's value if defaultValue(string) and serverSideFiltering is true", () => {
|
|
const selectedOptionLabels = derivedProperty.getSelectedOptionLabels(
|
|
{
|
|
selectedOptionValues: [],
|
|
serverSideFiltering: true,
|
|
selectedOptions: ["YELLOW"],
|
|
options: [
|
|
{ label: "Blue", value: "BLUE" },
|
|
{ label: "Green", value: "GREEN" },
|
|
{ label: "Red", value: "RED" },
|
|
],
|
|
},
|
|
null,
|
|
_,
|
|
);
|
|
|
|
expect(selectedOptionLabels).toStrictEqual([]);
|
|
});
|
|
});
|
|
});
|