Add test for showBindingPrompt function (#1566)

This commit is contained in:
akash-codemonk 2020-11-05 19:15:40 +05:30 committed by GitHub
parent c1ff711a45
commit 86cac0fae3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 55 additions and 7 deletions

View File

@ -0,0 +1,40 @@
import { showBindingPrompt } from "./BindingPromptHelper";
describe("Test to check conditons for showing binding prompt", () => {
it("Show binding prompt", () => {
const testCases = [
{ showEvaluatedValue: true, inputValue: "{" },
{ showEvaluatedValue: true, inputValue: "Some value" },
{ showEvaluatedValue: true, inputValue: "1" },
{ showEvaluatedValue: true, inputValue: "[1, 2, 3]" },
{ showEvaluatedValue: true, inputValue: "" },
{ showEvaluatedValue: true, inputValue: [1, 2, 3] },
{ showEvaluatedValue: true, inputValue: 1 },
{ showEvaluatedValue: true, inputValue: null },
{ showEvaluatedValue: true, inputValue: undefined },
];
testCases.forEach(testCase => {
expect(
showBindingPrompt(testCase.showEvaluatedValue, testCase.inputValue),
).toBeTruthy();
});
});
it("Hide binding prompt", () => {
const testCases = [
{ showEvaluatedValue: false, inputValue: "" },
{ showEvaluatedValue: false, inputValue: 1 },
{ showEvaluatedValue: false, inputValue: null },
{ showEvaluatedValue: false, inputValue: undefined },
{ showEvaluatedValue: true, inputValue: "Name: {{Widget.name}}" },
{ showEvaluatedValue: true, inputValue: "{{}}" },
];
testCases.forEach(testCase => {
expect(
showBindingPrompt(testCase.showEvaluatedValue, testCase.inputValue),
).toBeFalsy();
});
});
});

View File

@ -0,0 +1,11 @@
import { isString } from "lodash";
export const showBindingPrompt = (
showEvaluatedValue: boolean,
inputValue: any,
): boolean => {
return (
showEvaluatedValue &&
(!isString(inputValue) || !inputValue?.includes("{{") || !inputValue)
);
};

View File

@ -37,6 +37,7 @@ import { bindingMarker } from "components/editorComponents/CodeEditor/markHelper
import { bindingHint } from "components/editorComponents/CodeEditor/hintHelpers";
import { retryPromise } from "utils/AppsmithUtils";
import BindingPrompt from "./BindingPrompt";
import { showBindingPrompt } from "./BindingPromptHelper";
const LightningMenu = lazy(() =>
retryPromise(() => import("components/editorComponents/LightningMenu")),
@ -291,12 +292,6 @@ class CodeEditor extends Component<Props, State> {
("evaluatedValue" in this.props ||
("dataTreePath" in this.props && !!this.props.dataTreePath));
const showBindingPrompt =
showEvaluatedValue &&
(!_.isString(this.props.input.value) ||
!this.props.input.value?.includes("{{") ||
!this.props.input.value);
return (
<DynamicAutocompleteInputWrapper
theme={this.props.theme}
@ -373,7 +368,9 @@ class CodeEditor extends Component<Props, State> {
{this.props.rightIcon && (
<IconContainer>{this.props.rightIcon}</IconContainer>
)}
<BindingPrompt isOpen={showBindingPrompt} />
<BindingPrompt
isOpen={showBindingPrompt(showEvaluatedValue, input.value)}
/>
</EditorWrapper>
</EvaluatedValuePopup>
</DynamicAutocompleteInputWrapper>