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

templates.object.ObjectBuilderUtilImplTest.ftl Maven / Gradle / Ivy

Go to download

Maven plugin to generate Java classes from StoredProcedure and Functions in Database

There is a newer version: 1.8.20
Show newest version
package ${javaPackage}.${objectFolderName};
<#assign importList = ["java.sql.Connection", "java.sql.SQLException", "com.github.javafaker.Faker"]>
<#list parameter.parameters as parameter>
<#if parameter.clob>
<#assign importClobUtil = 1>
<#if utilFolderName != objectFolderName>
<#assign importList = importList + ["${javaPackage}.${utilFolderName}.${prefixUtilityName}ClobUtil"]>

<#elseif parameter.blob>
<#assign importBlobUtil = 1>
<#if utilFolderName != objectFolderName>
<#assign importList = importList + ["${javaPackage}.${utilFolderName}.${prefixUtilityName}BlobUtil"]>

<#elseif parameter.date>
<#assign importDateUtil = 1>
<#if utilFolderName != objectFolderName>
<#assign importList = importList + ["${javaPackage}.${utilFolderName}.${prefixUtilityName}DateUtil"]>


<#if parameter.date>
<#assign importDate = 1>
<#assign importList = importList + ["java.util.Date"]>


<#if utilFolderName != objectFolderName>
<#assign importList = importList + ["${javaPackage}.${utilFolderName}.${prefixUtilityName}ObjectUtil"]>

<#if junit == 'junit5'>
<#assign importList = importList + ["org.junit.jupiter.api.extension.ExtendWith", "org.mockito.junit.jupiter.MockitoExtension", "org.junit.jupiter.api.Assertions", "org.junit.jupiter.api.BeforeEach", "org.junit.jupiter.api.Test"]>
<#else>
<#assign importList = importList + ["org.junit.runner.RunWith", "org.mockito.runners.MockitoJUnitRunner", "org.junit.Assert", "org.junit.Before", "org.junit.Test"]>

<#assign importList = importList + ["org.mockito.ArgumentCaptor", "org.mockito.Captor", "org.mockito.Mock", "org.mockito.Mockito"]>

<#list importSort(importList) as import>
<#if previousImportMatch?? && !import?starts_with(previousImportMatch)>


import ${import};
<#assign previousImportMatch = import?keep_before_last(".") >

<#if importList?has_content>


<#if junit == 'junit5'>
@ExtendWith(MockitoExtension.class)
<#else>
@RunWith(MockitoJUnitRunner.class)

@SuppressWarnings({"rawtypes", "unchecked"})
class ${parameter.javaTypeName}BuilderUtilImplTest {
<#if importBlobUtil??>

    @Mock
    private ${prefixUtilityName}BlobUtil blobUtilMock;

<#if importClobUtil??>

    @Mock
    private ${prefixUtilityName}ClobUtil clobUtilMock;

<#if importDateUtil??>

    @Mock
    private ${prefixUtilityName}DateUtil dateUtilMock;


    @Mock
    private ${prefixUtilityName}ObjectUtil objectUtilMock;

    @Mock
    private Connection connectionMock;

    @Captor
    private ArgumentCaptor captorObjects;

    private Faker faker;

    private ${parameter.javaTypeName}BuilderUtil builder;

    @<#if junit == 'junit5'>BeforeEach<#else>Before
    void setUp() {
        faker = new Faker();
        builder = new ${parameter.javaTypeName}BuilderUtilImpl(${'\n'}            objectUtilMock<#if importBlobUtil??>,${'\n'}            blobUtilMock<#if importClobUtil??>,${'\n'}            clobUtilMock<#if importDateUtil??>,${'\n'}            dateUtilMock${'\n'}        );
    }
<#if importBlobUtil??>

    @Test
    void should_check_${parameter.realObjectName?lower_case}_builder_process_check_parameters_with_blob_util() throws SQLException {
        ${parameter.javaTypeName} object;

<#list parameter.parameters as parameter>
<#if parameter.number>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.random().nextLong();
<#elseif parameter.date>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.date().birthday();
<#elseif parameter.blob>
        ${parameter.javaTypeName} obj${parameter.propertyName} = new byte[faker.random().nextInt(${parameter.position} * 100)];
<#else>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.internet().uuid();



        object = new ${parameter.javaTypeName}Builder()<#list parameter.parameters as parameter>${'\n'}            .${parameter.fieldName}(obj${parameter.propertyName})${'\n'}            .build();

        Object[] obj = new Object[0];

        builder.process(connectionMock, object);

<#list parameter.parameters as parameterTest>
<#if parameterTest.blob>
        Mockito.verify(blobUtilMock, Mockito.times(1)).process(Mockito.same(connectionMock), Mockito.same(obj${parameterTest.propertyName}));


    }

<#if importClobUtil??>

    @Test
    void should_check_${parameter.realObjectName?lower_case}_builder_process_check_parameters_with_clob_util() throws SQLException {
        ${parameter.javaTypeName} object;

<#list parameter.parameters as parameter>
<#if parameter.number>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.random().nextLong();
<#elseif parameter.date>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.date().birthday();
<#elseif parameter.blob>
        ${parameter.javaTypeName} obj${parameter.propertyName} = new byte[faker.random().nextInt(${parameter.position} * 100)];
<#else>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.internet().uuid();



        object = new ${parameter.javaTypeName}Builder()<#list parameter.parameters as parameter>${'\n'}            .${parameter.fieldName}(obj${parameter.propertyName})${'\n'}            .build();

        Object[] obj = new Object[0];

        builder.process(connectionMock, object);

<#list parameter.parameters as parameterTest>
<#if parameterTest.clob>
        Mockito.verify(clobUtilMock, Mockito.times(1)).process(Mockito.same(connectionMock), Mockito.same(obj${parameterTest.propertyName}));


    }

<#if importDateUtil??>

    @Test
    void should_check_${parameter.realObjectName?lower_case}_builder_process_check_parameters_with_date_util() throws SQLException {
        ${parameter.javaTypeName} object;

<#list parameter.parameters as parameter>
<#if parameter.number>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.random().nextLong();
<#elseif parameter.date>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.date().birthday();
<#elseif parameter.blob>
        ${parameter.javaTypeName} obj${parameter.propertyName} = new byte[faker.random().nextInt(${parameter.position} * 100)];
<#else>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.internet().uuid();



        object = new ${parameter.javaTypeName}Builder()<#list parameter.parameters as parameter>${'\n'}            .${parameter.fieldName}(obj${parameter.propertyName})${'\n'}            .build();

        Object[] obj = new Object[0];

        builder.process(connectionMock, object);

<#list parameter.parameters as parameterTest>
<#if parameterTest.date>
        Mockito.verify(dateUtilMock, Mockito.times(1)).process(Mockito.eq(obj${parameterTest.propertyName}));


    }


    @Test
    void should_check_${parameter.realObjectName?lower_case}_builder_process_response() throws SQLException {
        ${parameter.javaTypeName} object;

<#list parameter.parameters as parameter>
<#if parameter.number>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.random().nextLong();
<#elseif parameter.date>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.date().birthday();
<#elseif parameter.blob>
        ${parameter.javaTypeName} obj${parameter.propertyName} = new byte[faker.random().nextInt(${parameter.position} * 100)];
<#else>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.internet().uuid();



        object = new ${parameter.javaTypeName}Builder()<#list parameter.parameters as parameter>${'\n'}            .${parameter.fieldName}(obj${parameter.propertyName})${'\n'}            .build();

        Object[] obj = new Object[0];

        Mockito.when(objectUtilMock.process(Mockito.any(), Mockito.anyString(), Mockito.any())).thenReturn(obj);

        Object result = builder.process(connectionMock, object);

        <#if junit == 'junit5'>Assertions<#else>Assert.assertNotNull(result);
        <#if junit == 'junit5'>Assertions<#else>Assert.assertSame(obj, result);

        Mockito.verify(objectUtilMock, Mockito.times(1)).process(Mockito.same(connectionMock), Mockito.eq("${parameter.realObjectName}"), captorObjects.capture());

        Object[] objParamsResult = captorObjects.getValue();

        <#if junit == 'junit5'>Assertions<#else>Assert.assertNotNull(objParamsResult);
        <#if junit == 'junit5'>Assertions<#else>Assert.assertEquals(${parameter.parameters?size}, objParamsResult.length);
    }
<#list parameter.parameters as parameterTest>

    @Test
    void should_check_${parameter.realObjectName?lower_case}_builder_process_check_parameter_${parameterTest.name?lower_case}_value() throws SQLException {
        ${parameter.javaTypeName} object;

<#list parameter.parameters as parameter>
<#if parameter.number>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.random().nextLong();
<#elseif parameter.date>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.date().birthday();
<#elseif parameter.blob>
        ${parameter.javaTypeName} obj${parameter.propertyName} = new byte[faker.random().nextInt(${parameter.position} * 100)];
<#else>
        ${parameter.javaTypeName} obj${parameter.propertyName} = faker.internet().uuid();



        object = new ${parameter.javaTypeName}Builder()<#list parameter.parameters as parameter>${'\n'}            .${parameter.fieldName}(obj${parameter.propertyName})${'\n'}            .build();

        Object[] obj = new Object[0];

<#list parameter.parameters as parameter>
<#if parameter.date>
        Mockito.when(dateUtilMock.process(obj${parameter.propertyName})).thenReturn(obj${parameter.propertyName});
<#elseif parameter.blob>
        Mockito.when(blobUtilMock.process(Mockito.same(connectionMock), Mockito.same(obj${parameter.propertyName}))).thenReturn(obj${parameter.propertyName});
<#elseif parameter.clob>
        Mockito.when(clobUtilMock.process(Mockito.same(connectionMock), Mockito.same(obj${parameter.propertyName}))).thenReturn(obj${parameter.propertyName});


        Mockito.when(objectUtilMock.process(Mockito.any(), Mockito.anyString(), Mockito.any())).thenReturn(obj);

        builder.process(connectionMock, object);

        Mockito.verify(objectUtilMock, Mockito.times(1)).process(Mockito.same(connectionMock), Mockito.eq("${parameter.realObjectName}"), captorObjects.capture());

        Object[] objParamsResult = captorObjects.getValue();

        <#if junit == 'junit5'>Assertions<#else>Assert.assertNotNull(objParamsResult);
<#if parameterTest.date>
        <#if junit == 'junit5'>Assertions<#else>Assert.assertEquals(obj${parameterTest.propertyName}, objParamsResult[${parameterTest.position - 1}]);
<#elseif parameterTest.blob>
        <#if junit == 'junit5'>Assertions<#else>Assert.<#if junit == 'junit5'>assertArrayEquals(obj${parameterTest.propertyName}, result.get${parameterTest.propertyName}())<#else>assertTrue(java.util.Arrays.equals(obj${parameter.propertyName}, result.get${parameter.propertyName}()));
<#else>
        <#if junit == 'junit5'>Assertions<#else>Assert.assertSame(obj${parameterTest.propertyName}, objParamsResult[${parameterTest.position - 1}]);

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy