package org.openlegacy.terminal; import apps.inventory.screens.ItemDetails1; import apps.inventory.screens.ItemDetails1.OuterUnitOfMeasure; import apps.inventory.screens.ItemDetails2; import apps.inventory.screens.ItemsList; import apps.inventory.screens.SignOn; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.openlegacy.DisplayItem; import org.openlegacy.definitions.BooleanFieldTypeDefinition; import org.openlegacy.definitions.EnumFieldTypeDefinition; import org.openlegacy.definitions.FieldTypeDefinition; import org.openlegacy.terminal.definitions.ScreenEntityDefinition; import org.openlegacy.terminal.definitions.ScreenFieldDefinition; import org.openlegacy.terminal.services.ScreenEntitiesRegistry; import org.openlegacy.terminal.services.ScreenIdentification; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.inject.Inject; @ContextConfiguration("/test-mock-context.xml") @RunWith(SpringJUnit4ClassRunner.class) public class RegistryTest { @Inject private ScreenEntitiesRegistry screenEntitiesRegistry; @Test public void testIdentifiers() { ScreenEntityDefinition screenDefinition = assertScreenExists(SignOn.class); ScreenIdentification screenIdentification = screenDefinition.getScreenIdentification(); Assert.assertNotNull(screenIdentification); // 1 from class, 1 from super class Assert.assertEquals(2, screenIdentification.getScreenIdentifiers().size()); } @Test public void testFields() { ScreenEntityDefinition screenDefinition = assertScreenExists(SignOn.class); // 4 from class, 1 from super class Assert.assertEquals(6, screenDefinition.getFieldsDefinitions().size()); } @Test public void testScreenPart() { ScreenEntityDefinition screenDefinition = assertScreenExists(ItemDetails2.class); Assert.assertEquals(2, screenDefinition.getPartsDefinitions().size()); } @Test public void testScreenTable() { ScreenEntityDefinition screenDefinition = assertScreenExists(ItemsList.class); Assert.assertEquals(1, screenDefinition.getTableDefinitions().size()); } @Test public void testActions() { ScreenEntityDefinition screenDefintion = assertScreenExists(SignOn.class); // 1 from class, 1 from super class Assert.assertEquals(2, screenDefintion.getActions().size()); } @Test public void testFieldTypes() { ScreenEntityDefinition screenDefinition = assertScreenExists(ItemDetails1.class); ScreenFieldDefinition screenFieldDefinition = screenDefinition.getFieldsDefinitions().get("palletLabelRequired"); Assert.assertNotNull(screenFieldDefinition); FieldTypeDefinition fieldTypeDefinition = screenFieldDefinition.getFieldTypeDefinition(); Assert.assertNotNull(fieldTypeDefinition); Assert.assertTrue(BooleanFieldTypeDefinition.class.isAssignableFrom(fieldTypeDefinition.getClass())); BooleanFieldTypeDefinition booleanFieldTypeDefinition = (BooleanFieldTypeDefinition)screenFieldDefinition.getFieldTypeDefinition(); Assert.assertEquals("Y", booleanFieldTypeDefinition.getTrueValue()); Assert.assertEquals("N", booleanFieldTypeDefinition.getFalseValue()); screenFieldDefinition = screenDefinition.getFieldsDefinitions().get("outerUnitOfMeasure"); Assert.assertNotNull(screenFieldDefinition); fieldTypeDefinition = screenFieldDefinition.getFieldTypeDefinition(); Assert.assertNotNull(fieldTypeDefinition); Assert.assertTrue(EnumFieldTypeDefinition.class.isAssignableFrom(fieldTypeDefinition.getClass())); EnumFieldTypeDefinition enumFieldTypeDefinition = (EnumFieldTypeDefinition)screenFieldDefinition.getFieldTypeDefinition(); Assert.assertEquals(2, enumFieldTypeDefinition.getEnums().size()); DisplayItem displayItem = enumFieldTypeDefinition.getEnums().get("kg"); Assert.assertEquals(OuterUnitOfMeasure.Kilogram, displayItem.getValue()); Assert.assertEquals("kilogram", displayItem.getDisplay()); } @Test public void testFieldFromSuperClass() { ScreenEntityDefinition screenDefinition = assertScreenExists(SignOn.class); Assert.assertNotNull(screenDefinition.getFieldsDefinitions().get("error")); } @Test public void testKeyFields() { ScreenEntityDefinition screenDefinition = assertScreenExists(ItemDetails1.class); Assert.assertNotNull(screenDefinition.getKeys()); Assert.assertEquals("itemNumber", screenDefinition.getKeys().get(0).getName()); } private ScreenEntityDefinition assertScreenExists(Class<?> clazz) { ScreenEntityDefinition screenDefinition = screenEntitiesRegistry.get(clazz); Assert.assertNotNull(screenDefinition); return screenDefinition; } }