package mapper;
import api.v1.Recipient;
import exceptions.PoseidonException;
import models.RecipientModel;
import org.junit.Test;
import service.OrderService;
import util.InMemoryDbTest;
import java.util.List;
import static org.junit.Assert.*;
public class RecipientMapperTest extends InMemoryDbTest {
@Test
public void testMappingRecipientFromModelToApi() {
List<RecipientModel> recipientModels = new OrderService(fakeUser).getRecipientsForOrder(1L);
assertNotNull("recipientModels", recipientModels);
assertEquals("recipientModels", 1, recipientModels.size());
List<Recipient> recipients = new RecipientMapper().mapToApi(recipientModels);
Recipient r = recipients.get(0);
assertNotNull("recipientModel", r);
assertEquals("email", r.email, recipientModels.get(0).email);
}
@Test
public void testMappingRecipientFromApiToModel() {
List<RecipientModel> recipientModels = new OrderService(fakeUser).getRecipientsForOrder(1L);
assertNotNull(recipientModels);
assertEquals(1, recipientModels.size());
RecipientMapper recipientMapper = new RecipientMapper();
Recipient recipient = recipientMapper.mapToApi(recipientModels.get(0));
assertNotNull(recipient);
RecipientModel recipientModel = recipientMapper.mapToModel(recipient, fakeUser);
assertEquals("email", recipient.email, recipientModel.email);
}
@Test(expected = PoseidonException.class)
public void testMapInvalidRecipientIdToModel() {
Recipient recipient = new Recipient();
// This recipient.id does not exist in the db, and mapping it to a model will
// fail with a PoseidonException
recipient.id = 1000L;
recipient.email = "bjarne@example.com";
new RecipientMapper().mapToModel(recipient, fakeUser);
assertTrue(true);
}
}