Fix missing stateDescriptionProvider in Group items (#3144)

* Fix missing stateDescriptionProvider in Group items

The stateDescriptionProvider was not properly passed to the base item. Because of that units set in the state description were not properly used when setting the group state after calculating aggregation functions.

Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
J-N-K
2022-11-06 20:50:05 +01:00
committed by GitHub
parent 9cdaa48fa5
commit 2bceba6954
3 changed files with 59 additions and 12 deletions
@@ -379,15 +379,44 @@ public class ItemRegistryImplTest extends JavaTest {
assertEquals(0, item.listeners.size());
}
@Test
public void assertStateDescriptionServiceGetsInjected() {
GenericItem item = spy(new SwitchItem("Item1"));
NumberItem baseItem = spy(new NumberItem("baseItem"));
GenericItem group = new GroupItem("Group", baseItem);
itemProvider.add(item);
itemProvider.add(group);
verify(item).setStateDescriptionService(any(StateDescriptionService.class));
verify(baseItem).setStateDescriptionService(any(StateDescriptionService.class));
}
@Test
public void assertUnitProviderGetsInjected() {
GenericItem item = spy(new SwitchItem("Item1"));
NumberItem baseItem = spy(new NumberItem("baseItem"));
GenericItem group = new GroupItem("Group", baseItem);
itemProvider.add(item);
itemProvider.add(group);
verify(item).setUnitProvider(any(UnitProvider.class));
verify(baseItem).setUnitProvider(any(UnitProvider.class));
}
@Test
public void assertCommandDescriptionServiceGetsInjected() {
GenericItem item = spy(new SwitchItem("Item1"));
NumberItem baseItem = spy(new NumberItem("baseItem"));
GenericItem group = new GroupItem("Group", baseItem);
itemProvider.add(item);
itemProvider.add(group);
verify(item).setCommandDescriptionService(null);
((ItemRegistryImpl) itemRegistry).setCommandDescriptionService(mock(CommandDescriptionService.class));
verify(item).setCommandDescriptionService(any(CommandDescriptionService.class));
verify(baseItem).setCommandDescriptionService(any(CommandDescriptionService.class));
}
@Test