diff --git a/src/common/WiFiSettings/WiFiSettings.js b/src/common/WiFiSettings/WiFiSettings.js
index ded5214..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 {};
@@ -89,5 +89,5 @@ function validator(formData) {
return errors;
},
);
- return JSON.stringify(formErrors) === "[{},{}]" ? null : formErrors;
+ return JSON.stringify(formErrors).match(/\[[{},?]+\]/) ? null : formErrors;
}
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