added tests
This commit is contained in:
parent
32bbd83541
commit
e2d17a822d
@ -653,6 +653,7 @@ public abstract class BaseController {
|
||||
return;
|
||||
case CALCULATED_FIELD:
|
||||
checkCalculatedFieldId(new CalculatedFieldId(entityId.getId()), operation);
|
||||
return;
|
||||
default:
|
||||
checkEntityId(entityId, entitiesService::findEntityByTenantIdAndId, operation);
|
||||
}
|
||||
|
||||
@ -0,0 +1,143 @@
|
||||
/**
|
||||
* Copyright © 2016-2024 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.controller;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.calculated_field.CalculatedField;
|
||||
import org.thingsboard.server.common.data.id.DeviceId;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@DaoSqlTest
|
||||
public class CalculatedFieldControllerTest extends AbstractControllerTest {
|
||||
|
||||
private final DeviceId DEVICE_ID = new DeviceId(UUID.fromString("9e408b94-dc05-47e2-a21c-1a6c0d7bd90a"));
|
||||
|
||||
private Tenant savedTenant;
|
||||
private User tenantAdmin;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("My tenant");
|
||||
savedTenant = saveTenant(tenant);
|
||||
assertThat(savedTenant).isNotNull();
|
||||
|
||||
tenantAdmin = new User();
|
||||
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
||||
tenantAdmin.setTenantId(savedTenant.getId());
|
||||
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
||||
tenantAdmin.setFirstName("Joe");
|
||||
tenantAdmin.setLastName("Downs");
|
||||
|
||||
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
||||
}
|
||||
|
||||
@After
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
deleteTenant(savedTenant.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveCalculatedField() throws Exception {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
|
||||
CalculatedField savedCalculatedField = doPost("/api/calculatedField", calculatedField, CalculatedField.class);
|
||||
|
||||
assertThat(savedCalculatedField).isNotNull();
|
||||
assertThat(savedCalculatedField.getId()).isNotNull();
|
||||
assertThat(savedCalculatedField.getCreatedTime()).isGreaterThan(0);
|
||||
assertThat(savedCalculatedField.getTenantId()).isEqualTo(savedTenant.getId());
|
||||
assertThat(savedCalculatedField.getEntityId()).isEqualTo(calculatedField.getEntityId());
|
||||
assertThat(savedCalculatedField.getType()).isEqualTo(calculatedField.getType());
|
||||
assertThat(savedCalculatedField.getName()).isEqualTo(calculatedField.getName());
|
||||
assertThat(savedCalculatedField.getConfiguration()).isEqualTo(calculatedField.getConfiguration());
|
||||
assertThat(savedCalculatedField.getVersion()).isEqualTo(calculatedField.getVersion());
|
||||
|
||||
savedCalculatedField.setName("Test CF");
|
||||
|
||||
CalculatedField updatedCalculatedField = doPost("/api/calculatedField", savedCalculatedField, CalculatedField.class);
|
||||
|
||||
assertThat(updatedCalculatedField).isEqualTo(savedCalculatedField);
|
||||
|
||||
doDelete("/api/calculatedField/" + savedCalculatedField.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCalculatedFieldById() throws Exception {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
|
||||
CalculatedField savedCalculatedField = doPost("/api/calculatedField", calculatedField, CalculatedField.class);
|
||||
CalculatedField fetchedCalculatedField = doGet("/api/calculatedField/" + savedCalculatedField.getId().getId(), CalculatedField.class);
|
||||
|
||||
assertThat(fetchedCalculatedField).isNotNull();
|
||||
assertThat(fetchedCalculatedField).isEqualTo(savedCalculatedField);
|
||||
|
||||
doDelete("/api/calculatedField/" + savedCalculatedField.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteCalculatedField() throws Exception {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
|
||||
CalculatedField savedCalculatedField = doPost("/api/calculatedField", calculatedField, CalculatedField.class);
|
||||
|
||||
assertThat(savedCalculatedField).isNotNull();
|
||||
|
||||
doDelete("/api/calculatedField/" + savedCalculatedField.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
doGet("/api/calculatedField/" + savedCalculatedField.getId().getId()).andExpect(status().isNotFound());
|
||||
|
||||
}
|
||||
|
||||
private CalculatedField getCalculatedField() {
|
||||
CalculatedField calculatedField = new CalculatedField();
|
||||
calculatedField.setEntityId(DEVICE_ID);
|
||||
calculatedField.setType("Simple");
|
||||
calculatedField.setName("Test Calculated Field");
|
||||
calculatedField.setConfigurationVersion(1);
|
||||
calculatedField.setConfiguration(JacksonUtil.toJsonNode("{\n" +
|
||||
" \"T\": {\n" +
|
||||
" \"key\": \"temperature\",\n" +
|
||||
" \"type\": \"TIME_SERIES\"\n" +
|
||||
" },\n" +
|
||||
" \"H\": {\n" +
|
||||
" \"key\": \"humidity\",\n" +
|
||||
" \"type\": \"TIME_SERIES\",\n" +
|
||||
" \"defaultValue\": 50\n" +
|
||||
" }\n" +
|
||||
" }\n"));
|
||||
calculatedField.setVersion(1L);
|
||||
return calculatedField;
|
||||
}
|
||||
|
||||
}
|
||||
@ -21,10 +21,7 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.thingsboard.server.common.data.BaseData;
|
||||
import org.thingsboard.server.common.data.HasName;
|
||||
import org.thingsboard.server.common.data.HasTenantId;
|
||||
import org.thingsboard.server.common.data.HasVersion;
|
||||
import org.thingsboard.server.common.data.*;
|
||||
import org.thingsboard.server.common.data.id.CalculatedFieldId;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
@ -34,7 +31,7 @@ import org.thingsboard.server.common.data.validation.NoXss;
|
||||
@Schema
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class CalculatedField extends BaseData<CalculatedFieldId> implements HasName, HasTenantId, HasVersion {
|
||||
public class CalculatedField extends BaseData<CalculatedFieldId> implements HasName, HasTenantId, HasVersion, ExportableEntity<CalculatedFieldId> {
|
||||
|
||||
private static final long serialVersionUID = 4491966747773381420L;
|
||||
|
||||
@ -91,4 +88,21 @@ public class CalculatedField extends BaseData<CalculatedFieldId> implements HasN
|
||||
return super.getCreatedTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringBuilder()
|
||||
.append("CalculatedField[")
|
||||
.append("tenantId=").append(tenantId)
|
||||
.append(", entityId=").append(entityId)
|
||||
.append(", type='").append(type)
|
||||
.append(", name='").append(name)
|
||||
.append(", configurationVersion=").append(configurationVersion)
|
||||
.append(", configuration=").append(configuration)
|
||||
.append(", version=").append(version)
|
||||
.append(", externalId=").append(externalId)
|
||||
.append(", createdTime=").append(createdTime)
|
||||
.append(", id=").append(id).append(']')
|
||||
.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -39,7 +39,6 @@ public class BaseCalculatedFieldService implements CalculatedFieldService {
|
||||
|
||||
private final CalculatedFieldDao calculatedFieldDao;
|
||||
|
||||
|
||||
@Override
|
||||
public CalculatedField save(CalculatedField calculatedField) {
|
||||
log.trace("Executing save, [{}]", calculatedField);
|
||||
|
||||
@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Copyright © 2016-2024 The Thingsboard Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.thingsboard.server.dao.calculated_field;
|
||||
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
import org.thingsboard.server.common.data.calculated_field.CalculatedField;
|
||||
import org.thingsboard.server.common.data.id.DeviceId;
|
||||
import org.thingsboard.server.dao.service.AbstractServiceTest;
|
||||
import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@DaoSqlTest
|
||||
public class CalculatedFieldServiceTest extends AbstractServiceTest {
|
||||
|
||||
private final DeviceId DEVICE_ID = new DeviceId(UUID.fromString("71c73816-361e-4e57-82ab-e1deaa8b7d66"));
|
||||
|
||||
@Autowired
|
||||
private CalculatedFieldService calculatedFieldService;
|
||||
|
||||
private ListeningExecutorService executor;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
executor = MoreExecutors.listeningDecorator(ThingsBoardExecutors.newWorkStealingPool(8, getClass()));
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() {
|
||||
executor.shutdownNow();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveCalculatedField() {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
CalculatedField savedCalculatedField = calculatedFieldService.save(calculatedField);
|
||||
|
||||
assertThat(savedCalculatedField).isNotNull();
|
||||
assertThat(savedCalculatedField.getId()).isNotNull();
|
||||
assertThat(savedCalculatedField.getCreatedTime()).isGreaterThan(0);
|
||||
assertThat(savedCalculatedField.getTenantId()).isEqualTo(calculatedField.getTenantId());
|
||||
assertThat(savedCalculatedField.getEntityId()).isEqualTo(calculatedField.getEntityId());
|
||||
assertThat(savedCalculatedField.getType()).isEqualTo(calculatedField.getType());
|
||||
assertThat(savedCalculatedField.getName()).isEqualTo(calculatedField.getName());
|
||||
assertThat(savedCalculatedField.getConfiguration()).isEqualTo(calculatedField.getConfiguration());
|
||||
assertThat(savedCalculatedField.getVersion()).isEqualTo(calculatedField.getVersion());
|
||||
|
||||
savedCalculatedField.setName("Test CF");
|
||||
|
||||
CalculatedField updatedCalculatedField = calculatedFieldService.save(savedCalculatedField);
|
||||
|
||||
assertThat(updatedCalculatedField).isEqualTo(savedCalculatedField);
|
||||
|
||||
calculatedFieldService.deleteCalculatedField(tenantId, savedCalculatedField.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindCalculatedFieldById() {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
CalculatedField savedCalculatedField = calculatedFieldService.save(calculatedField);
|
||||
|
||||
CalculatedField fetchedCalculatedField = calculatedFieldService.findById(tenantId, savedCalculatedField.getId());
|
||||
|
||||
assertThat(fetchedCalculatedField).isEqualTo(savedCalculatedField);
|
||||
|
||||
calculatedFieldService.deleteCalculatedField(tenantId, savedCalculatedField.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteCalculatedField() {
|
||||
CalculatedField calculatedField = getCalculatedField();
|
||||
CalculatedField savedCalculatedField = calculatedFieldService.save(calculatedField);
|
||||
|
||||
calculatedFieldService.deleteCalculatedField(tenantId, savedCalculatedField.getId());
|
||||
|
||||
assertThat(calculatedFieldService.findById(tenantId, savedCalculatedField.getId())).isNull();
|
||||
}
|
||||
|
||||
private CalculatedField getCalculatedField() {
|
||||
CalculatedField calculatedField = new CalculatedField();
|
||||
calculatedField.setTenantId(tenantId);
|
||||
calculatedField.setEntityId(DEVICE_ID);
|
||||
calculatedField.setType("Simple");
|
||||
calculatedField.setName("Test Calculated Field");
|
||||
calculatedField.setConfigurationVersion(1);
|
||||
calculatedField.setConfiguration(JacksonUtil.toJsonNode("{\n" +
|
||||
" \"T\": {\n" +
|
||||
" \"key\": \"temperature\",\n" +
|
||||
" \"type\": \"TIME_SERIES\"\n" +
|
||||
" },\n" +
|
||||
" \"H\": {\n" +
|
||||
" \"key\": \"humidity\",\n" +
|
||||
" \"type\": \"TIME_SERIES\",\n" +
|
||||
" \"defaultValue\": 50\n" +
|
||||
" }\n" +
|
||||
" }\n"));
|
||||
calculatedField.setVersion(1L);
|
||||
return calculatedField;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user