Commit 112b92503e2a477e9f5f54f08121d3a9d167a2aa
Committed by
Andrew Shvayka
1 parent
02f928b9
Added tests for predication queries
Showing
1 changed file
with
123 additions
and
4 deletions
@@ -925,7 +925,9 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | @@ -925,7 +925,9 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | ||
925 | new EntityKey(EntityKeyType.ENTITY_FIELD, "createdTime"), EntityDataSortOrder.Direction.DESC | 925 | new EntityKey(EntityKeyType.ENTITY_FIELD, "createdTime"), EntityDataSortOrder.Direction.DESC |
926 | ); | 926 | ); |
927 | 927 | ||
928 | - List<EntityKey> entityFields = Arrays.asList(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), new EntityKey(EntityKeyType.ENTITY_FIELD, "deviceType")); | 928 | + List<EntityKey> entityFields = Arrays.asList(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), |
929 | + new EntityKey(EntityKeyType.ENTITY_FIELD, "entityType")); | ||
930 | + | ||
929 | List<EntityKey> latestValues = Collections.singletonList(new EntityKey(EntityKeyType.CLIENT_ATTRIBUTE, "attributeString")); | 931 | List<EntityKey> latestValues = Collections.singletonList(new EntityKey(EntityKeyType.CLIENT_ATTRIBUTE, "attributeString")); |
930 | 932 | ||
931 | List<KeyFilter> keyFiltersEqualString = createStringKeyFilters("attributeString", EntityKeyType.CLIENT_ATTRIBUTE, StringFilterPredicate.StringOperation.EQUAL, "equal"); | 933 | List<KeyFilter> keyFiltersEqualString = createStringKeyFilters("attributeString", EntityKeyType.CLIENT_ATTRIBUTE, StringFilterPredicate.StringOperation.EQUAL, "equal"); |
@@ -940,7 +942,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | @@ -940,7 +942,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | ||
940 | 942 | ||
941 | List<KeyFilter> keyFiltersNotContainsString = createStringKeyFilters("attributeString", EntityKeyType.CLIENT_ATTRIBUTE, StringFilterPredicate.StringOperation.NOT_CONTAINS, "NOT_CONTAINS"); | 943 | List<KeyFilter> keyFiltersNotContainsString = createStringKeyFilters("attributeString", EntityKeyType.CLIENT_ATTRIBUTE, StringFilterPredicate.StringOperation.NOT_CONTAINS, "NOT_CONTAINS"); |
942 | 944 | ||
943 | - List<KeyFilter> deviceTypeFilters = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.EQUAL, "EQUAL"); | 945 | + List<KeyFilter> deviceTypeFilters = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.NOT_EQUAL, "NOT_EQUAL"); |
944 | 946 | ||
945 | // Equal Operation | 947 | // Equal Operation |
946 | 948 | ||
@@ -1032,7 +1034,124 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | @@ -1032,7 +1034,124 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | ||
1032 | } | 1034 | } |
1033 | 1035 | ||
1034 | @Test | 1036 | @Test |
1035 | - public void testBuildSimplePredicateQueryOperations() throws JsonMappingException, JsonProcessingException, ExecutionException, InterruptedException{ | 1037 | + public void testBuildStringPredicateQueryOperationsForEntityType() throws ExecutionException, InterruptedException{ |
1038 | + | ||
1039 | + List<Device> devices = new ArrayList<>(); | ||
1040 | + | ||
1041 | + for (int i = 0; i < 10; i++) { | ||
1042 | + Device device = new Device(); | ||
1043 | + device.setTenantId(tenantId); | ||
1044 | + device.setName("Device" + i); | ||
1045 | + device.setType("default"); | ||
1046 | + device.setLabel("testLabel" + (int) (Math.random() * 1000)); | ||
1047 | + devices.add(deviceService.saveDevice(device)); | ||
1048 | + //TO make sure devices have different created time | ||
1049 | + Thread.sleep(1); | ||
1050 | + } | ||
1051 | + | ||
1052 | + DeviceTypeFilter filter = new DeviceTypeFilter(); | ||
1053 | + filter.setDeviceType("default"); | ||
1054 | + filter.setDeviceNameFilter(""); | ||
1055 | + | ||
1056 | + EntityDataSortOrder sortOrder = new EntityDataSortOrder( | ||
1057 | + new EntityKey(EntityKeyType.ENTITY_FIELD, "createdTime"), EntityDataSortOrder.Direction.DESC | ||
1058 | + ); | ||
1059 | + | ||
1060 | + List<EntityKey> entityFields = Arrays.asList(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), | ||
1061 | + new EntityKey(EntityKeyType.ENTITY_FIELD, "entityType")); | ||
1062 | + | ||
1063 | + List<KeyFilter> keyFiltersEqualString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.EQUAL, "device"); | ||
1064 | + List<KeyFilter> keyFiltersNotEqualString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.NOT_EQUAL, "asset"); | ||
1065 | + List<KeyFilter> keyFiltersStartsWithString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.STARTS_WITH, "dev"); | ||
1066 | + List<KeyFilter> keyFiltersEndsWithString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.ENDS_WITH, "ice"); | ||
1067 | + List<KeyFilter> keyFiltersContainsString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.CONTAINS, "vic"); | ||
1068 | + List<KeyFilter> keyFiltersNotContainsString = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.NOT_CONTAINS, "dolphin"); | ||
1069 | + | ||
1070 | + // Equal Operation | ||
1071 | + | ||
1072 | + EntityDataPageLink pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1073 | + EntityDataQuery query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersEqualString); | ||
1074 | + PageData<EntityData> data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1075 | + List<EntityData> loadedEntities = getLoadedEntities(data, query); | ||
1076 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1077 | + | ||
1078 | + List<String> loadedStrings = loadedEntities.stream().map(entityData -> | ||
1079 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1080 | + | ||
1081 | + List<String> devicesNames = devices.stream().map(Device::getName).collect(Collectors.toList()); | ||
1082 | + | ||
1083 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1084 | + | ||
1085 | + // Not equal Operation | ||
1086 | + | ||
1087 | + pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1088 | + query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersNotEqualString); | ||
1089 | + data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1090 | + loadedEntities = getLoadedEntities(data, query); | ||
1091 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1092 | + | ||
1093 | + loadedStrings = loadedEntities.stream().map(entityData -> | ||
1094 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1095 | + | ||
1096 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1097 | + | ||
1098 | + // Starts with Operation | ||
1099 | + | ||
1100 | + pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1101 | + query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersStartsWithString); | ||
1102 | + data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1103 | + loadedEntities = getLoadedEntities(data, query); | ||
1104 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1105 | + | ||
1106 | + loadedStrings = loadedEntities.stream().map(entityData -> | ||
1107 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1108 | + | ||
1109 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1110 | + | ||
1111 | + // Ends with Operation | ||
1112 | + | ||
1113 | + pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1114 | + query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersEndsWithString); | ||
1115 | + data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1116 | + loadedEntities = getLoadedEntities(data, query); | ||
1117 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1118 | + | ||
1119 | + loadedStrings = loadedEntities.stream().map(entityData -> | ||
1120 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1121 | + | ||
1122 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1123 | + | ||
1124 | + // Contains Operation | ||
1125 | + | ||
1126 | + pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1127 | + query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersContainsString); | ||
1128 | + data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1129 | + loadedEntities = getLoadedEntities(data, query); | ||
1130 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1131 | + | ||
1132 | + loadedStrings = loadedEntities.stream().map(entityData -> | ||
1133 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1134 | + | ||
1135 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1136 | + | ||
1137 | + // Not contains Operation | ||
1138 | + | ||
1139 | + pageLink = new EntityDataPageLink(100, 0, null, sortOrder); | ||
1140 | + query = new EntityDataQuery(filter, pageLink, entityFields, null, keyFiltersNotContainsString); | ||
1141 | + data = entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); | ||
1142 | + loadedEntities = getLoadedEntities(data, query); | ||
1143 | + Assert.assertEquals(devices.size(), loadedEntities.size()); | ||
1144 | + | ||
1145 | + loadedStrings = loadedEntities.stream().map(entityData -> | ||
1146 | + entityData.getLatest().get(EntityKeyType.ENTITY_FIELD).get("name").getValue()).collect(Collectors.toList()); | ||
1147 | + | ||
1148 | + Assert.assertTrue(listEqualWithoutOrder(devicesNames, loadedStrings)); | ||
1149 | + | ||
1150 | + deviceService.deleteDevicesByTenantId(tenantId); | ||
1151 | + } | ||
1152 | + | ||
1153 | + @Test | ||
1154 | + public void testBuildSimplePredicateQueryOperations() throws InterruptedException{ | ||
1036 | 1155 | ||
1037 | List<Device> devices = new ArrayList<>(); | 1156 | List<Device> devices = new ArrayList<>(); |
1038 | 1157 | ||
@@ -1053,7 +1172,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | @@ -1053,7 +1172,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { | ||
1053 | 1172 | ||
1054 | EntityDataSortOrder sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), EntityDataSortOrder.Direction.DESC); | 1173 | EntityDataSortOrder sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), EntityDataSortOrder.Direction.DESC); |
1055 | 1174 | ||
1056 | - List<KeyFilter> deviceTypeFilters = createStringKeyFilters("entityType", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.EQUAL, "EQUAL"); | 1175 | + List<KeyFilter> deviceTypeFilters = createStringKeyFilters("type", EntityKeyType.ENTITY_FIELD, StringFilterPredicate.StringOperation.EQUAL, "default"); |
1057 | 1176 | ||
1058 | KeyFilter createdTimeFilter = createNumericKeyFilter("createdTime", EntityKeyType.ENTITY_FIELD, NumericFilterPredicate.NumericOperation.GREATER, 1L); | 1177 | KeyFilter createdTimeFilter = createNumericKeyFilter("createdTime", EntityKeyType.ENTITY_FIELD, NumericFilterPredicate.NumericOperation.GREATER, 1L); |
1059 | List<KeyFilter> createdTimeFilters = Collections.singletonList(createdTimeFilter); | 1178 | List<KeyFilter> createdTimeFilters = Collections.singletonList(createdTimeFilter); |