Add JpaTargetFilterQuery converter test (#2049)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-16 12:13:22 +02:00
committed by GitHub
parent 4545849548
commit 1c40584733
4 changed files with 44 additions and 16 deletions

View File

@@ -169,8 +169,7 @@ public interface TargetFilterQueryManagement {
Page<TargetFilterQuery> findByAutoAssignDSAndRsql(@NotNull Pageable pageable, long setId, String rsqlParam);
/**
* Retrieves all {@link TargetFilterQuery}s with an auto-assign distribution
* set.
* Retrieves all {@link TargetFilterQuery}s with an auto-assign distribution set.
*
* @param pageable pagination information
* @return the page with the found {@link TargetFilterQuery}s

View File

@@ -9,6 +9,7 @@
*/
package org.eclipse.hawkbit.repository.jpa.model;
import java.io.Serial;
import java.util.Optional;
import jakarta.persistence.Column;
@@ -37,14 +38,14 @@ import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder;
* Stored target filter.
*/
@Entity
@Table(name = "sp_target_filter_query", uniqueConstraints = @UniqueConstraint(columnNames = { "name",
"tenant" }, name = "uk_tenant_custom_filter_name"))
// exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for
// sub entities
@Table(
name = "sp_target_filter_query",
uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_tenant_custom_filter_name"))
// exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities
@SuppressWarnings("squid:S2160")
public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity
implements TargetFilterQuery, EventAwareEntity {
public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity implements TargetFilterQuery, EventAwareEntity {
@Serial
private static final long serialVersionUID = 1L;
@Column(name = "name", length = NamedEntity.NAME_MAX_SIZE, nullable = false)

View File

@@ -47,13 +47,12 @@ import org.springframework.util.CollectionUtils;
class RolloutGroupManagementTest extends AbstractJpaIntegrationTest {
@Test
@Description("Verifies that management get access reacts as specfied on calls for non existing entities by means "
+ "of Optional not present.")
@Description("Verifies that management get access reacts as specified on calls for non existing entities by means " +
"of Optional not present.")
@ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 0) })
void nonExistingEntityAccessReturnsNotPresent() {
assertThat(rolloutGroupManagement.get(NOT_EXIST_IDL)).isNotPresent();
assertThat(rolloutGroupManagement.getWithDetailedStatus(NOT_EXIST_IDL)).isNotPresent();
}
@Test
@@ -219,7 +218,7 @@ class RolloutGroupManagementTest extends AbstractJpaIntegrationTest {
}
@Test
@Description("Tests the rollout status mapping.")
@Description("Tests the rollout group status mapping.")
void testRolloutGroupStatusConvert() {
final long id = rolloutGroupRepository.findByRolloutId(
testdataFactory.createAndStartRollout(1, 0, 1, "100", "80").getId(), PAGE).getContent()
@@ -282,5 +281,4 @@ class RolloutGroupManagementTest extends AbstractJpaIntegrationTest {
private Target reloadTarget(final Target targetCancelled) {
return targetManagement.get(targetCancelled.getId()).orElseThrow();
}
}
}

View File

@@ -19,6 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;
import jakarta.validation.ConstraintViolationException;
@@ -27,6 +28,7 @@ import io.qameta.allure.Feature;
import io.qameta.allure.Step;
import io.qameta.allure.Story;
import org.assertj.core.api.Assertions;
import org.eclipse.hawkbit.exception.AbstractServerRtException;
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
import org.eclipse.hawkbit.repository.builder.AutoAssignDistributionSetUpdate;
import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent;
@@ -41,6 +43,7 @@ import org.eclipse.hawkbit.repository.exception.InvalidAutoAssignActionTypeExcep
import org.eclipse.hawkbit.repository.exception.InvalidDistributionSetException;
import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldException;
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery;
import org.eclipse.hawkbit.repository.model.Action;
import org.eclipse.hawkbit.repository.model.Action.ActionType;
import org.eclipse.hawkbit.repository.model.DistributionSet;
@@ -236,7 +239,6 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest
@Test
@Description("Updates an existing filter query with a query string that addresses too many targets.")
public void updateTargetFilterQueryWithQueryThatExceedsQuota() {
// create targets
final int maxTargets = quotaManagement.getMaxTargetsPerAutoAssignment();
testdataFactory.createTargets(maxTargets + 1, "target%s");
@@ -389,7 +391,7 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest
final DistributionSet ds = testdataFactory.createDistributionSet();
final Long filterId = targetFilterQueryManagement
.create(entityFactory.targetFilterQuery().create().name("a")
.query("name==*").autoAssignDistributionSet(ds).autoAssignWeight(23)).getId();
.query("name==*").autoAssignDistributionSet(ds).autoAssignWeight(23)).getId();
assertThat(
targetFilterQueryManagement
.updateAutoAssignDS(entityFactory.targetFilterQuery().updateAutoAssign(filterId).ds(null).weight(null)))
@@ -481,6 +483,34 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest
.ds(incompleteDistributionSet.getId())));
}
@Test
@Description("Tests the auto assign action type mapping.")
void testAutoAssignActionTypeConvert() {
for (final ActionType actionType : ActionType.values()) {
final Supplier<Long> create = () ->
targetFilterQueryManagement.create(
entityFactory.targetFilterQuery()
.create()
.name("testAutoAssignActionTypeConvert_" + actionType)
.query("name==*")
.autoAssignActionType(actionType))
.getId();
if (actionType == ActionType.TIMEFORCED) {
assertThatExceptionOfType(AbstractServerRtException.class).isThrownBy(create::get);
} else {
assertThat(targetFilterQueryManagement.get(create.get()).orElseThrow().getAutoAssignActionType()).isEqualTo(actionType);
}
}
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() ->
((JpaTargetFilterQuery) targetFilterQueryManagement.create(
entityFactory.targetFilterQuery()
.create()
.name("testAutoAssignActionTypeConvert")
.query("name==*")))
.setAutoAssignActionType(ActionType.TIMEFORCED));
}
@Step
private void verifyAutoAssignmentWithDefaultActionType(final String filterName,
final TargetFilterQuery targetFilterQuery, final DistributionSet distributionSet) {