Added tenant profile upgrade script & Added argument test & removed outdated todo items

This commit is contained in:
dshvaika 2025-08-15 12:43:31 +03:00
parent faf842f998
commit 0c03abe5e6
6 changed files with 59 additions and 10 deletions

View File

@ -43,4 +43,23 @@ DROP INDEX IF EXISTS idx_widgets_bundle_external_id;
-- DROP INDEXES THAT DUPLICATE UNIQUE CONSTRAINT END
ALTER TABLE mobile_app ADD COLUMN IF NOT EXISTS title varchar(255);
-- ADD NEW COLUMN TITLE TO MOBILE APP START
ALTER TABLE mobile_app ADD COLUMN IF NOT EXISTS title varchar(255);
-- ADD NEW COLUMN TITLE TO MOBILE APP END
-- UPDATE TENANT PROFILE CONFIGURATION START
UPDATE tenant_profile
SET profile_data = jsonb_set(
profile_data,
'{configuration}',
(profile_data -> 'configuration') || '{
"minAllowedScheduledUpdateIntervalInSecForCF": 3600
}'::jsonb,
false
)
WHERE (profile_data -> 'configuration' -> 'minAllowedScheduledUpdateIntervalInSecForCF') IS NULL;
-- UPDATE TENANT PROFILE CONFIGURATION END

View File

@ -71,8 +71,7 @@ public class GeofencingZoneState {
this.ts = newZoneState.getTs();
this.version = newVersion;
this.perimeterDefinition = newZoneState.getPerimeterDefinition();
// TODO: should we reinitialize state if zone changed?
// this.inside = null;
this.inside = null;
return true;
}
return false;

View File

@ -160,7 +160,6 @@ public class GeofencingCalculatedFieldStateTest {
assertThat(state.getArguments()).isEqualTo(newArgs);
}
// TODO: write opposite test for this. See TODO in the GeofencingZoneState class.
@Test
void testUpdateStateWhenUpdateExistingGeofencingValueArgumentEntryWithTheSameValue() {
state.arguments = new HashMap<>(Map.of("allowedZones", geofencingAllowedZoneArgEntry));
@ -345,9 +344,6 @@ public class GeofencingCalculatedFieldStateTest {
config.setZoneRelationType("CurrentZone");
config.setZoneRelationDirection(EntitySearchDirection.TO);
// TODO: Does CF possible to save with null?
config.setExpression("latitude + longitude");
Output output = new Output();
output.setType(OutputType.TIME_SERIES);
config.setOutput(output);

View File

@ -184,6 +184,4 @@ public class GeofencingValueArgumentEntryTest {
assertThat(geofencingArgumentEntry.isEmpty()).isTrue();
}
// TODO: should we test to TBEL logic?
}

View File

@ -26,7 +26,6 @@ public class Argument {
@Nullable
private EntityId refEntityId;
// TODO: add upgrade in PE version -> CFArgumentDynamicSourceType to CFArgumentDynamicSourceConfiguration
private CfArgumentDynamicSourceConfiguration refDynamicSourceConfiguration;
private ReferencedEntityKey refEntityKey;
private String defaultValue;

View File

@ -0,0 +1,38 @@
/**
* Copyright © 2016-2025 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.common.data.cf.configuration;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class ArgumentTest {
@Test
void validateShouldReturnFalseIfDynamicSourceConfigurationIsNull() {
var argument = new Argument();
assertThat(argument.hasDynamicSource()).isFalse();
}
@Test
void validateShouldReturnTrueIfDynamicSourceConfigurationIsNotNull() {
var argument = new Argument();
argument.setRefDynamicSourceConfiguration(new RelationQueryDynamicSourceConfiguration());
assertThat(argument.hasDynamicSource()).isTrue();
}
}