From 57f1ccced86624c53ab25ab99ac9686eda958a49 Mon Sep 17 00:00:00 2001 From: Aleksandr Gumroian Date: Tue, 23 Jun 2020 16:46:51 +0200 Subject: [PATCH 1/2] Fix form submission button for one or more Wi-Fi modules. --- src/common/WiFiSettings/WiFiSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/WiFiSettings/WiFiSettings.js b/src/common/WiFiSettings/WiFiSettings.js index ded5214..1d20c9c 100644 --- a/src/common/WiFiSettings/WiFiSettings.js +++ b/src/common/WiFiSettings/WiFiSettings.js @@ -89,5 +89,5 @@ function validator(formData) { return errors; }, ); - return JSON.stringify(formErrors) === "[{},{}]" ? null : formErrors; + return JSON.stringify(formErrors).match(/\[[{},?]+\]/) ? null : formErrors; } From 67e4abe4d164bf6deed962095b1f616ec0f8c33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Sa=C5=A1ek?= Date: Thu, 2 Jul 2020 15:32:46 +0200 Subject: [PATCH 2/2] Add test suites for a Wi-Fi form submission --- src/common/WiFiSettings/WiFiSettings.js | 2 +- .../__tests__/WiFiSettings.test.js | 18 +++- .../__tests__/__fixtures__/wifiSettings.js | 82 +++++++++++++++++++ 3 files changed, 99 insertions(+), 3 deletions(-) diff --git a/src/common/WiFiSettings/WiFiSettings.js b/src/common/WiFiSettings/WiFiSettings.js index 1d20c9c..9f7fa15 100644 --- a/src/common/WiFiSettings/WiFiSettings.js +++ b/src/common/WiFiSettings/WiFiSettings.js @@ -64,7 +64,7 @@ function prepDataToSubmit(formData) { return formData; } -function validator(formData) { +export function validator(formData) { const formErrors = formData.devices.map( (device) => { if (!device.enabled) return {}; diff --git a/src/common/WiFiSettings/__tests__/WiFiSettings.test.js b/src/common/WiFiSettings/__tests__/WiFiSettings.test.js index 1622fba..2f4d0eb 100644 --- a/src/common/WiFiSettings/__tests__/WiFiSettings.test.js +++ b/src/common/WiFiSettings/__tests__/WiFiSettings.test.js @@ -13,8 +13,8 @@ import { fireEvent, render, wait } from "customTestRender"; import { WebSockets } from "webSockets/WebSockets"; import { mockJSONError } from "testUtils/network"; -import { wifiSettingsFixture } from "./__fixtures__/wifiSettings"; -import { WiFiSettings } from "../WiFiSettings"; +import { wifiSettingsFixture, oneDevice, twoDevices, threeDevices } from "./__fixtures__/wifiSettings"; +import { WiFiSettings, validator } from "../WiFiSettings"; describe("", () => { let firstRender; @@ -159,4 +159,18 @@ describe("", () => { }; expect(mockAxios.post).toHaveBeenCalledWith(endpoint, data, expect.anything()); }); + + it("Validator function using regex for one device", () => { + expect(validator(oneDevice)).toEqual(null); + }); + + it("Validator function using regex for two devices", () => { + const twoDevicesFormErrors = [{SSID: "SSID can't be empty"}, {}]; + expect(validator(twoDevices)).toEqual(twoDevicesFormErrors); + }); + + it("Validator function using regex for three devices", () => { + const threeDevicesFormErrors = [{}, {}, {password: "Password must contain at least 8 symbols"}]; + expect(validator(threeDevices)).toEqual(threeDevicesFormErrors); + }); }); diff --git a/src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js b/src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js index 71c8eb2..4ee0091 100644 --- a/src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js +++ b/src/common/WiFiSettings/__tests__/__fixtures__/wifiSettings.js @@ -316,3 +316,85 @@ export function wifiSettingsFixture() { ], }; } +const oneDevice = { + devices: [ + { + SSID: "Turris1", + channel: 60, + enabled: true, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "TestPass" + } + ] +}; + +const twoDevices = { + devices: [ + { + SSID: "", + channel: 60, + enabled: true, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "TestPass" + }, + { + SSID: "Turris2", + channel: 60, + enabled: true, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "TestPass" + } + ] +}; + +const threeDevices = { + devices: [ + { + SSID: "Turris1", + channel: 60, + enabled: true, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "TestPass" + }, + { + SSID: "Turris2", + channel: 60, + enabled: false, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "TestPass" + }, + { + SSID: "Turris3", + channel: 60, + enabled: true, + guest_wifi: { enabled: false }, + hidden: false, + htmode: "HT40", + hwmode: "11a", + id: 0, + password: "" + } + ] +}; + +export {oneDevice, twoDevices, threeDevices}; \ No newline at end of file