dropwizard/dropwizard

View on GitHub
dropwizard-validation/src/test/java/io/dropwizard/validation/SizeValidatorTest.java

Summary

Maintainability
B
6 hrs
Test Coverage
package io.dropwizard.validation;

import io.dropwizard.util.Size;
import io.dropwizard.util.SizeUnit;
import org.junit.jupiter.api.Test;

import javax.validation.Valid;
import javax.validation.Validator;
import java.util.Collections;
import java.util.List;
import java.util.Locale;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

class SizeValidatorTest {
    @SuppressWarnings("unused")
    public static class Example {
        @MaxSize(value = 30, unit = SizeUnit.KILOBYTES)
        private Size tooBig = Size.gigabytes(2);

        @MinSize(value = 30, unit = SizeUnit.KILOBYTES)
        private Size tooSmall = Size.bytes(100);

        @SizeRange(min = 10, max = 100, unit = SizeUnit.KILOBYTES)
        private Size outOfRange = Size.megabytes(2);

        @Valid
        private List<@MaxSize(value = 30, unit = SizeUnit.KILOBYTES) Size> maxSize =
                Collections.singletonList(Size.gigabytes(2));

        @Valid
        private List<@MinSize(value = 30, unit = SizeUnit.KILOBYTES) Size> minSize =
                Collections.singletonList(Size.bytes(100));

        @Valid
        private List<@SizeRange(min = 10, max = 100, unit = SizeUnit.KILOBYTES) Size> rangeSize =
                Collections.singletonList(Size.megabytes(2));

        public void setTooBig(Size tooBig) {
            this.tooBig = tooBig;
        }
        public void setTooSmall(Size tooSmall) {
            this.tooSmall = tooSmall;
        }
        public void setOutOfRange(Size outOfRange) {
            this.outOfRange = outOfRange;
        }
        public void setMaxSize(List<Size> maxSize) {
            this.maxSize = maxSize;
        }
        public void setMinSize(List<Size> minSize) {
            this.minSize = minSize;
        }
        public void setRangeSize(List<Size> rangeSize) {
            this.rangeSize = rangeSize;
        }
    }

    private final Validator validator = BaseValidator.newValidator();

    @Test
    void returnsASetOfErrorsForAnObject() throws Exception {
        assumeTrue("en".equals(Locale.getDefault().getLanguage()),
                "This test executes when the defined language is English ('en'). If not, it is skipped.");

        assertThat(ConstraintViolations.format(validator.validate(new Example())))
                    .containsOnly("outOfRange must be between 10 KILOBYTES and 100 KILOBYTES",
                                  "tooBig must be less than or equal to 30 KILOBYTES",
                                  "tooSmall must be greater than or equal to 30 KILOBYTES",
                                   "maxSize[0].<list element> must be less than or equal to 30 KILOBYTES",
                                   "minSize[0].<list element> must be greater than or equal to 30 KILOBYTES",
                                   "rangeSize[0].<list element> must be between 10 KILOBYTES and 100 KILOBYTES");

    }

    @Test
    void returnsAnEmptySetForAValidObject() throws Exception {
        final Example example = new Example();
        example.setTooBig(Size.bytes(10));
        example.setTooSmall(Size.megabytes(10));
        example.setOutOfRange(Size.kilobytes(64));
        example.setMaxSize(Collections.singletonList(Size.bytes(10)));
        example.setMinSize(Collections.singletonList(Size.megabytes(10)));
        example.setRangeSize(Collections.singletonList(Size.kilobytes(64)));

        assertThat(validator.validate(example))
                .isEmpty();
    }
}