From 42ea9938fa7ddef73b2a8aad937d783015ae6356 Mon Sep 17 00:00:00 2001 From: arunvjn <32433245+arunvjn@users.noreply.github.com> Date: Fri, 11 Aug 2023 15:50:13 +0530 Subject: [PATCH] fix: fixed auto indent in fields that contains JSON inside mustache binding (#26245) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Fixes auto indent on save in field that contains JS objects #### PR fixes following issue(s) Fixes #25325 #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change - Bug fix (non-breaking change which fixes an issue) > > ## Testing > #### How Has This Been Tested? - [x] Manual - [x] Cypress > > #### Test Plan 1. Verified query and api parameter for indentation after command +S 2. Verified code editor for object and array indentation and cmd+s 3. Verified chrome and firefox browser for cmd+s #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [x] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --- .../VisualTests/JSEditorIndent_spec.js | 19 ++++++++++++++++++ .../formattedJSONBodyAfterSave.snap.png | Bin 0 -> 13756 bytes app/client/cypress/support/Pages/ApiPage.ts | 1 + .../editorComponents/CodeEditor/modes.ts | 1 + 4 files changed, 21 insertions(+) create mode 100644 app/client/cypress/snapshots/JSEditorIndent_spec.js/formattedJSONBodyAfterSave.snap.png diff --git a/app/client/cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js b/app/client/cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js index a95ee658fe..0d50efea49 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js +++ b/app/client/cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js @@ -4,6 +4,8 @@ import { entityExplorer, homePage, jsEditor, + apiPage, + dataSources, } from "../../../../support/Objects/ObjectsCore"; describe("JSEditor Indendation - Visual tests", () => { @@ -341,4 +343,21 @@ myFun2: async () => { cy.get("div.CodeMirror").type("{cmd+leftArrow}"); cy.get("div.CodeMirror").matchImageSnapshot("jsObjAfterGoLineStartSmart5"); }); + + it("5. Bug 25325 Check if the JS Object in body field is formatted properly on save", () => { + apiPage.CreateApi("FirstAPI"); + apiPage.SelectPaneTab("Body"); + apiPage.SelectSubTab("JSON"); + dataSources.EnterQuery( + `{{ + { + "title": this.params.title, + "due": this.params.due, + assignee: this.params.assignee + } + }}`, + ); + cy.get("body").type(agHelper.isMac ? "{meta}S" : "{ctrl}S"); + cy.get(apiPage.jsonBody).matchImageSnapshot("formattedJSONBodyAfterSave"); + }); }); diff --git a/app/client/cypress/snapshots/JSEditorIndent_spec.js/formattedJSONBodyAfterSave.snap.png b/app/client/cypress/snapshots/JSEditorIndent_spec.js/formattedJSONBodyAfterSave.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9afa4c18c7a3bdf761b4257b9a716dde441f7d GIT binary patch literal 13756 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
dZ>>+1>B_^ejQVHfzUFRe0Ef4;=5?;qS^ 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 { delimStyle: "binding-brackets", mode: CodeMirror.getMode(config, { name: "javascript", + json: true, }), })), );