diff --git a/src/common/WiFiSettings/WiFiForm.js b/src/common/WiFiSettings/WiFiForm.js index ac04184..e0d203a 100644 --- a/src/common/WiFiSettings/WiFiForm.js +++ b/src/common/WiFiSettings/WiFiForm.js @@ -38,12 +38,12 @@ WiFiForm.defaultProps = { export default function WiFiForm({ formData, formErrors, setFormValue, hasGuestNetwork, disabled, }) { - return formData.devices.map((device, idx) => ( + return formData.devices.map((device, index) => ( ({ devices: { [deviceNumber]: { enabled: { $set: value } } } }), + (value) => ({ devices: { [deviceIndex]: { enabled: { $set: value } } } }), )} {...props} @@ -102,7 +102,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ({ devices: { - [deviceNumber]: { + [deviceIndex]: { SSID: { $set: value }, }, }, @@ -129,7 +129,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ( - { devices: { [deviceNumber]: { password: { $set: value } } } } + { devices: { [deviceIndex]: { password: { $set: value } } } } ), )} @@ -143,7 +143,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ( - { devices: { [deviceNumber]: { hidden: { $set: value } } } } + { devices: { [deviceIndex]: { hidden: { $set: value } } } } ), )} @@ -160,7 +160,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ({ devices: { - [deviceNumber]: { + [deviceIndex]: { hwmode: { $set: value }, channel: { $set: "0" }, }, @@ -179,7 +179,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ( - { devices: { [deviceNumber]: { htmode: { $set: value } } } } + { devices: { [deviceIndex]: { htmode: { $set: value } } } } ), )} @@ -193,7 +193,7 @@ function DeviceForm({ onChange={setFormValue( (value) => ( - { devices: { [deviceNumber]: { channel: { $set: value } } } } + { devices: { [deviceIndex]: { channel: { $set: value } } } } ), )} @@ -202,7 +202,7 @@ function DeviceForm({ {hasGuestNetwork && ( { 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