fix: Generate group ID if empty string given (#27702)

Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
This commit is contained in:
Nerivec
2025-06-12 20:28:55 +02:00
committed by GitHub
parent 6a8d20858e
commit 0e66b29983
2 changed files with 36 additions and 35 deletions
+1 -1
View File
@@ -596,7 +596,7 @@ export function addGroup(name: string, id?: string): GroupOptions {
settings.groups = {};
}
if (id == null) {
if (id == null || (typeof id === "string" && id.trim() === "")) {
// look for free ID
id = "1";
+35 -34
View File
@@ -506,7 +506,7 @@ describe("Settings", () => {
it("Should read groups", () => {
const content = {
groups: {
1: {
"1": {
friendly_name: "123",
},
},
@@ -515,18 +515,17 @@ describe("Settings", () => {
write(configurationFile, content);
const group = settings.getGroup("1");
const expected = {
expect(group).toStrictEqual({
ID: 1,
friendly_name: "123",
};
expect(group).toStrictEqual(expected);
});
});
it("Throw if removing non-existing group", () => {
const content = {
groups: {
1: {
"1": {
friendly_name: "123",
},
},
@@ -543,7 +542,7 @@ describe("Settings", () => {
};
const contentGroups = {
1: {
"1": {
friendly_name: "123",
},
};
@@ -552,12 +551,11 @@ describe("Settings", () => {
write(groupsFile, contentGroups);
const group = settings.getGroup("1");
const expected = {
expect(group).toStrictEqual({
ID: 1,
friendly_name: "123",
};
expect(group).toStrictEqual(expected);
});
});
it("Combine everything! groups and devices from separate file :)", () => {
@@ -567,9 +565,8 @@ describe("Settings", () => {
};
const contentGroups = {
1: {
"1": {
friendly_name: "123",
devices: [],
},
};
write(configurationFile, contentConfiguration);
@@ -586,44 +583,48 @@ describe("Settings", () => {
expect(read(configurationFile)).toStrictEqual(expectedConfiguration);
const expectedDevice = {
expect(read(devicesFile)).toStrictEqual({
"0x1234": {
friendly_name: "0x1234",
},
};
expect(read(devicesFile)).toStrictEqual(expectedDevice);
});
const group = settings.getGroup("1");
const expectedGroup = {
expect(group).toStrictEqual({
ID: 1,
friendly_name: "123",
devices: [],
};
expect(group).toStrictEqual(expectedGroup);
});
expect(read(configurationFile)).toStrictEqual(expectedConfiguration);
const expectedDevice2 = {
expect(settings.getDevice("0x1234")).toStrictEqual({
ID: "0x1234",
friendly_name: "0x1234",
};
expect(settings.getDevice("0x1234")).toStrictEqual(expectedDevice2);
});
});
it("Should add groups", () => {
write(configurationFile, {});
settings.addGroup("test123");
const expected = {
1: {
expect(settings.get().groups).toStrictEqual({
"1": {
friendly_name: "test123",
},
};
});
expect(settings.get().groups).toStrictEqual(expected);
settings.addGroup("test456", "");
expect(settings.get().groups).toStrictEqual({
"1": {
friendly_name: "test123",
},
"2": {
friendly_name: "test456",
},
});
});
it("Should allow username without password", () => {
@@ -650,7 +651,7 @@ describe("Settings", () => {
settings.addGroup("test123", "123");
const expected = {
123: {
"123": {
friendly_name: "test123",
},
};
@@ -682,7 +683,7 @@ describe("Settings", () => {
settings.addGroup("test123");
}).toThrow(`friendly_name 'test123' is already in use`);
const expected = {
1: {
"1": {
friendly_name: "test123",
},
};
@@ -698,7 +699,7 @@ describe("Settings", () => {
settings.addGroup("test_id_123", "123");
}).toThrow(new Error("Group ID '123' is already in use"));
const expected = {
123: {
"123": {
friendly_name: "test123",
},
};
@@ -835,7 +836,7 @@ describe("Settings", () => {
write(configurationFile, {
...minimalConfig,
devices: {"0x0017880104e45519": {friendly_name: "myname", retain: false}},
groups: {1: {friendly_name: "myname", retain: false}},
groups: {"1": {friendly_name: "myname", retain: false}},
});
settings.reRead();