All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.vality.testcontainers.annotations.util.RandomBeans Maven / Gradle / Ivy

package dev.vality.testcontainers.annotations.util;

import dev.vality.geck.serializer.kit.mock.MockMode;
import dev.vality.geck.serializer.kit.mock.MockTBaseProcessor;
import dev.vality.geck.serializer.kit.tbase.TBaseHandler;
import lombok.SneakyThrows;
import org.apache.thrift.TBase;

import java.time.Instant;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static io.github.benas.randombeans.EnhancedRandomBuilder.aNewEnhancedRandom;

public class RandomBeans {

    public static  T random(Class type, String... excludedFields) {
        return aNewEnhancedRandom().nextObject(type, excludedFields);
    }

    public static  List randomListOf(int amount, Class type, String... excludedFields) {
        return aNewEnhancedRandom().objects(type, amount, excludedFields).collect(Collectors.toList());
    }

    public static  Stream randomStreamOf(int amount, Class type, String... excludedFields) {
        return aNewEnhancedRandom().objects(type, amount, excludedFields);
    }

    @SneakyThrows
    public static > T randomThrift(Class type) {
        var mockTBaseProcessor = new MockTBaseProcessor(MockMode.ALL, 25, 1);
        mockTBaseProcessor.addFieldHandler(
                structHandler -> structHandler.value(Instant.now().toString()),
                "created_at", "at", "due");
        return mockTBaseProcessor.process(type.getConstructor().newInstance(), new TBaseHandler<>(type));
    }

    @SneakyThrows
    public static > T randomThriftOnlyRequiredFields(Class type) {
        var mockTBaseProcessor = new MockTBaseProcessor(MockMode.REQUIRED_ONLY, 25, 1);
        mockTBaseProcessor.addFieldHandler(
                structHandler -> structHandler.value(Instant.now().toString()),
                "created_at", "at", "due");
        return mockTBaseProcessor.process(type.getConstructor().newInstance(), new TBaseHandler<>(type));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy