Package mireka.transmission.queue

Source Code of mireka.transmission.queue.MailEnvelopePersisterTest$CountingMockAnswer

package mireka.transmission.queue;

import static org.junit.Assert.*;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import mireka.ExampleMail;
import mireka.transmission.Mail;
import mireka.transmission.queue.dataprop.DataProperties;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;

@RunWith(MockitoJUnitRunner.class)
public class MailEnvelopePersisterTest {

    @Test
    public void testAllFieldsAreSaved() {
        CountingMockAnswer countingMockAnswer = new CountingMockAnswer();
        DataProperties mockedProperties =
                Mockito.mock(DataProperties.class, countingMockAnswer);
        MailEnvelopePersister persister = new MailEnvelopePersister();

        persister.storeMailFieldsIntoProperties(ExampleMail.simple(),
                mockedProperties);

        assertEquals(calculateCountOfAttributesToBeStoredInProperties(),
                countingMockAnswer.count);
    }

    @Test
    public void testAllFieldsAreRead() {
        CountingMockAnswer countingMockAnswer = new CountingMockAnswer();
        DataProperties mockedProperties =
                Mockito.mock(DataProperties.class, countingMockAnswer);
        MailEnvelopePersister persister = new MailEnvelopePersister();

        persister.readFromProperties(mockedProperties);

        assertEquals(calculateCountOfAttributesToBeStoredInProperties(),
                countingMockAnswer.count);
    }

    private static int calculateCountOfAttributesToBeStoredInProperties() {
        int c = 0;
        for (Field field : Mail.class.getDeclaredFields()) {
            if (!field.isSynthetic()
                    && !Modifier.isStatic(field.getModifiers()))
                c++;
        }
        int countOfFieldsNotStoredAsProperty = 1; // mailData
        return c - countOfFieldsNotStoredAsProperty;
    }

    public static class CountingMockAnswer implements Answer<Object> {
        public int count = 0;

        @Override
        public Object answer(InvocationOnMock invocation) throws Throwable {
            count++;
            return Mockito.RETURNS_SMART_NULLS.answer(invocation);
        }

    }

}
TOP

Related Classes of mireka.transmission.queue.MailEnvelopePersisterTest$CountingMockAnswer

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.