Package hudson.plugins.emailext.plugins.content

Source Code of hudson.plugins.emailext.plugins.content.FailedTestsContentTest

package hudson.plugins.emailext.plugins.content;

import java.util.ArrayList;
import java.util.List;

import hudson.model.AbstractBuild;
import hudson.model.TaskListener;
import hudson.tasks.test.AbstractTestResultAction;
import hudson.tasks.test.TestObject;
import hudson.tasks.test.TestResult;
import hudson.util.StreamTaskListener;

import org.apache.commons.lang.StringUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import org.mockito.Mockito;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;


@SuppressWarnings({"unchecked"})
@RunWith(PowerMockRunner.class)
@PrepareForTest( { TestResult.class })
public class FailedTestsContentTest
{
    private FailedTestsContent failedTestContent;

    private AbstractBuild build;
   
    private TaskListener listener;
   
    @Before
    public void setUp()
    {
        failedTestContent = new FailedTestsContent();
        listener = StreamTaskListener.fromStdout();
        build = mock( AbstractBuild.class );
    }

    @Test
    public void testGetContent_noTestsRanShouldGiveAMeaningfulMessage()
            throws Exception {
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        assertEquals( "No tests ran.", content );
    }

    @Test
    public void testGetContent_whenAllTestsPassedShouldGiveMeaningfulMessage()
            throws Exception {
        AbstractTestResultAction testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 0 );

        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        assertEquals( "All tests passed", content );
    }

    @Test
    public void testGetContent_whenSomeTestsFailedShouldGiveMeaningfulMessage()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 123 );

        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxTests = 0;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        assertEquals( "123 tests failed.\n", content );
    }

    @Test
    public void testGetContent_withMessage_withStack()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 2 );

        List<TestResult> failedTests = new ArrayList<TestResult>();
        for(int i = 0; i < 2; i++) {
            TestResult result = mock( TestResult.class );
            when( result.isPassed() ).thenReturn( false );
            when( result.getFullName() ).thenReturn( "hudson.plugins.emailext.ExtendedEmailPublisherTest" );
            when( result.getDisplayName() ).thenReturn( "Test" + i );
            when( result.getErrorDetails() ).thenReturn( "Error" + i );
            when( result.getErrorStackTrace() ).thenReturn( "Stack" + i );
            failedTests.add(result);
        }
       
        Mockito.<List<? extends TestResult>>when( testResults.getFailedTests() ).thenReturn( failedTests );       
        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxTests = 2;
        failedTestContent.showMessage = true;
        failedTestContent.showStack = true;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        for(int i = 0; i < 2; i++) {
            assertTrue( content.contains("FAILED:  hudson.plugins.emailext.ExtendedEmailPublisherTest.Test" + i) );
            assertTrue( content.contains("Error Message:\nError" + i) );
            assertTrue( content.contains("Stack Trace:\nStack" + i) );
        }
    }

    @Test
    public void testGetContent_noMessage_withStack()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 2 );

        List<TestResult> failedTests = new ArrayList<TestResult>();
        for(int i = 0; i < 2; i++) {
            TestResult result = mock( TestResult.class );
            when( result.isPassed() ).thenReturn( false );
            when( result.getFullName() ).thenReturn( "hudson.plugins.emailext.ExtendedEmailPublisherTest" );
            when( result.getDisplayName() ).thenReturn( "Test" + i );
            when( result.getErrorDetails() ).thenReturn( "Error" + i );
            when( result.getErrorStackTrace() ).thenReturn( "Stack" + i );
            failedTests.add(result);
        }
        Mockito.<List<? extends TestResult>>when( testResults.getFailedTests() ).thenReturn( failedTests );
        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxTests = 2;
        failedTestContent.showMessage = false;
        failedTestContent.showStack = true;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        for(int i = 0; i < 2; i++) {
            assertTrue( content.contains("FAILED:  hudson.plugins.emailext.ExtendedEmailPublisherTest.Test" + i) );
            assertFalse( content.contains("Error Message:\nError" + i) );
            assertTrue( content.contains("Stack Trace:\nStack" + i) );
        }
    }

    @Test
    public void testGetContent_withMessage_noStack()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 2 );

        List<TestResult> failedTests = new ArrayList<TestResult>();
        for(int i = 0; i < 2; i++) {
            TestResult result = mock( TestResult.class );
            when( result.isPassed() ).thenReturn( false );
            when( result.getFullName() ).thenReturn( "hudson.plugins.emailext.ExtendedEmailPublisherTest" );
            when( result.getDisplayName() ).thenReturn( "Test" + i );
            when( result.getErrorDetails() ).thenReturn( "Error" + i );
            when( result.getErrorStackTrace() ).thenReturn( "Stack" + i );
            failedTests.add(result);
        }
        Mockito.<List<? extends TestResult>>when( testResults.getFailedTests() ).thenReturn( failedTests );
        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxTests = 2;
        failedTestContent.showMessage = true;
        failedTestContent.showStack = false;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        for(int i = 0; i < 2; i++) {
            assertTrue( content.contains("FAILED:  hudson.plugins.emailext.ExtendedEmailPublisherTest.Test" + i) );
            assertTrue( content.contains("Error Message:\nError" + i) );
            assertFalse( content.contains("Stack Trace:\nStack" + i) );
        }
    }

    @Test
    public void testGetContent_noMessage_noStack()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 2 );

        List<TestResult> failedTests = new ArrayList<TestResult>();
        for(int i = 0; i < 2; i++) {
            TestResult result = mock( TestResult.class );
            when( result.isPassed() ).thenReturn( false );
            when( result.getFullName() ).thenReturn( "hudson.plugins.emailext.ExtendedEmailPublisherTest" );
            when( result.getDisplayName() ).thenReturn( "Test" + i );
            when( result.getErrorDetails() ).thenReturn( "Error" + i );
            when( result.getErrorStackTrace() ).thenReturn( "Stack" + i );
            failedTests.add(result);
        }
        Mockito.<List<? extends TestResult>>when( testResults.getFailedTests() ).thenReturn( failedTests );
        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxTests = 2;
        failedTestContent.showMessage = false;
        failedTestContent.showStack = false;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );

        for(int i = 0; i < 2; i++) {
            assertTrue( content.contains("FAILED:  hudson.plugins.emailext.ExtendedEmailPublisherTest.Test" + i) );
            assertFalse( content.contains("Error Message:\nError" + i) );
            assertFalse( content.contains("Stack Trace:\nStack" + i) );
        }
    }

    @Test
    public void testGetContent_whenContentLargerThanMaxLengthShouldTruncate()
            throws Exception {
        AbstractTestResultAction<?> testResults = mock( AbstractTestResultAction.class );
        when( testResults.getFailCount() ).thenReturn( 5 );

        List<TestResult> failedTests = new ArrayList<TestResult>();
        for(int i = 0; i < 5; i++) {
            TestResult result = mock( TestResult.class );
            when( result.isPassed() ).thenReturn( false );
            when( result.getFullName() ).thenReturn( "hudson.plugins.emailext.ExtendedEmailPublisherTest" );
            when( result.getDisplayName() ).thenReturn( "Test" + i );
            when( result.getErrorDetails() ).thenReturn( StringUtils.leftPad( "", 3 * 1024, 'z' ) );
            when( result.getErrorStackTrace() ).thenReturn( StringUtils.leftPad( "", 200, 'e' ) );
            failedTests.add(result);
        }

        Mockito.<List<? extends TestResult>>when( testResults.getFailedTests() ).thenReturn( failedTests );
        when( build.getAction(AbstractTestResultAction.class) ).thenReturn( testResults );

        failedTestContent.maxLength = 10;
        String content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );
        assertTrue( content.length() < (3 * 1024 * 5) );

        failedTestContent = new FailedTestsContent();
        failedTestContent.showStack = true;
        content = failedTestContent.evaluate( build, listener, FailedTestsContent.MACRO_NAME );
        assertTrue( content.length() >= (3 * 1024 * 5) );
    }
}
TOP

Related Classes of hudson.plugins.emailext.plugins.content.FailedTestsContentTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.