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 | 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 | 931 | List<EntityKey> latestValues = Collections.singletonList(new EntityKey(EntityKeyType.CLIENT_ATTRIBUTE, "attributeString")); |
930 | 932 | |
931 | 933 | List<KeyFilter> keyFiltersEqualString = createStringKeyFilters("attributeString", EntityKeyType.CLIENT_ATTRIBUTE, StringFilterPredicate.StringOperation.EQUAL, "equal"); |
... | ... | @@ -940,7 +942,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
940 | 942 | |
941 | 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 | 947 | // Equal Operation |
946 | 948 | |
... | ... | @@ -1032,7 +1034,124 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
1032 | 1034 | } |
1033 | 1035 | |
1034 | 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 | 1156 | List<Device> devices = new ArrayList<>(); |
1038 | 1157 | |
... | ... | @@ -1053,7 +1172,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
1053 | 1172 | |
1054 | 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 | 1177 | KeyFilter createdTimeFilter = createNumericKeyFilter("createdTime", EntityKeyType.ENTITY_FIELD, NumericFilterPredicate.NumericOperation.GREATER, 1L); |
1059 | 1178 | List<KeyFilter> createdTimeFilters = Collections.singletonList(createdTimeFilter); | ... | ... |