package in.partake.model.dto;
import in.partake.app.PartakeTestApp;
import in.partake.base.DateTime;
import in.partake.model.fixture.TestDataProvider;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
/**
*
* @author skypencil (@eller86)
*/
public final class EventCommentTest extends AbstractPartakeModelTest<EventComment> {
private EventComment[] samples;
@Override
protected EventComment copy(EventComment t) {
return new EventComment(t);
}
@Override
protected TestDataProvider<EventComment> getTestDataProvider() {
return PartakeTestApp.getTestService().getTestDataProviderSet().getCommentDataProvider();
}
@Before
public void createSamples() {
samples = new EventComment[] {
new EventComment("id1", "eventId1", "userId1", "comment1", false, new DateTime(0)),
new EventComment("id2", "eventId2", "userId2", "comment2", true, new DateTime(1)),
};
}
@Test
public void testCopyConstructor() {
for (EventComment source : samples) {
Assert.assertEquals(source.getId(), new EventComment(source).getId());
Assert.assertEquals(source.getEventId(), new EventComment(source).getEventId());
Assert.assertEquals(source.getUserId(), new EventComment(source).getUserId());
Assert.assertEquals(source.getComment(), new EventComment(source).getComment());
Assert.assertEquals(source.getCreatedAt(), new EventComment(source).getCreatedAt());
}
}
@Test
public void testCopyConstructorByReflection() throws IllegalArgumentException, IllegalAccessException {
for (EventComment source : samples) {
EventComment copy = new EventComment(source);
for (Field field : EventComment.class.getDeclaredFields()) {
if (!Modifier.isStatic(field.getModifiers())) {
field.setAccessible(true);
Assert.assertEquals(field.get(source), field.get(copy));
}
}
}
}
@Test(expected = NullPointerException.class)
public void testCopyConstructorByNullValue() {
new EventComment((EventComment) null);
}
@Test
public void testCopyConstructorByFlozenInstance() {
EventComment source = getTestDataProvider().create();
Assert.assertFalse(source.isFrozen());
source.freeze();
Assert.assertTrue(source.isFrozen());
Assert.assertFalse(new EventComment(source).isFrozen());
}
}