package mapper;
import api.v1.Order;
import models.OrderModel;
import org.junit.Test;
import service.OrderService;
import util.InMemoryDbTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class OrderMapperTest extends InMemoryDbTest {
@Test
public void testMappingOrderFromModelToApi() {
OrderModel orderModel = new OrderService(fakeUser).getById(1);
assertNotNull(orderModel);
Order order = new OrderMapper().mapToApi(orderModel);
assertNotNull(order);
assertEquals("met_ref", order.met_ref, orderModel.met_ref);
assertEquals("custref_po_calloff", order.custref_po_calloff, orderModel.custref_po_calloff);
assertEquals("custref_contractnum", order.custref_contractnum, orderModel.custref_contractnum);
assertEquals("custref_email", order.custref_email, orderModel.custref_email);
assertEquals("customer_name", order.customer_name, orderModel.customer_name);
assertEquals("customer_email", order.customer_email, orderModel.customer_email);
assertEquals("customer_phone", order.customer_phone, orderModel.customer_phone);
assertEquals("start_date1", order.start_date1, orderModel.start_date1);
assertEquals("start_termin1", order.start_termin1, orderModel.start_termin1);
assertEquals("end_date1", order.end_date1, orderModel.end_date1);
assertEquals("end_termin1", order.end_termin1, orderModel.end_termin1);
assertNotNull("termins1", order.termins1);
assertEquals("termins1 length", 8, order.termins1.length);
assertEquals("termin 0", 0, order.termins1[0].hour);
assertEquals("termin 0", false, order.termins1[0].selected);
assertEquals("termin 1", 3, order.termins1[1].hour);
assertEquals("termin 1", true, order.termins1[1].selected);
assertEquals("termin 2", 6, order.termins1[2].hour);
assertEquals("termin 2", true, order.termins1[2].selected);
assertEquals("termin 3", 9, order.termins1[3].hour);
assertEquals("termin 3", true, order.termins1[3].selected);
assertEquals("termin 4", 12, order.termins1[4].hour);
assertEquals("termin 4", false, order.termins1[4].selected);
assertEquals("termin 5", 15, order.termins1[5].hour);
assertEquals("termin 5", false, order.termins1[5].selected);
assertEquals("termin 6", 18, order.termins1[6].hour);
assertEquals("termin 6", true, order.termins1[6].selected);
assertEquals("termin 7", 21, order.termins1[7].hour);
assertEquals("termin 7", false, order.termins1[7].selected);
assertNotNull("position null", order.position);
assertNotNull("customer null", order.customer);
assertEquals("customer name", order.customer.name, orderModel.customer.name);
assertEquals("customer username", order.customer.username, orderModel.customer.username);
assertEquals("customer password", order.customer.password, orderModel.customer.password);
assertEquals("customer info", order.customer.info, orderModel.customer.info);
assertEquals("position name", order.position.name, orderModel.position.name);
assertEquals("position lat", order.position.dec.getLatitude(), orderModel.position.latitude, 0.0001);
assertEquals("position lon", order.position.dec.getLongitude(), orderModel.position.longitude, 0.0001);
assertEquals("position name", order.position.name, orderModel.position.name);
assertEquals("info_for_meteorologist", order.info_for_meteorologist, orderModel.info_for_meteorologist);
assertEquals("other_info", order.other_info, orderModel.other_info);
assertNotNull("recipients null", order.recipients);
assertEquals("recipients size", 1, order.recipients.size());
assertEquals("recipient username", "leifj@met.no", order.recipients.get(0).email);
}
@Test
public void testMappingOrderFromApiToModel() {
OrderModel orderModel = new OrderService(fakeUser).getById(1);
assertNotNull(orderModel);
OrderMapper orderMapper = new OrderMapper();
Order order = orderMapper.mapToApi(orderModel);
assertNotNull(order);
orderModel = orderMapper.mapToModel(order, orderModel, fakeUser);
assertNotNull(order);
assertEquals("met_ref", order.met_ref, orderModel.met_ref);
assertEquals("custref_po_calloff", order.custref_po_calloff, orderModel.custref_po_calloff);
assertEquals("custref_contractnum", order.custref_contractnum, orderModel.custref_contractnum);
assertEquals("custref_email", order.custref_email, orderModel.custref_email);
assertEquals("customer_name", order.customer_name, orderModel.customer_name);
assertEquals("customer_email", order.customer_email, orderModel.customer_email);
assertEquals("customer_phone", order.customer_phone, orderModel.customer_phone);
assertEquals("start_date1", order.start_date1, orderModel.start_date1);
assertEquals("start_termin1", order.start_termin1, orderModel.start_termin1);
assertEquals("end_date1", order.end_date1, orderModel.end_date1);
assertEquals("end_termin1", order.end_termin1, orderModel.end_termin1);
assertEquals("start_date11", order.start_date2, orderModel.start_date2);
assertEquals("start_termin1", order.start_termin2, orderModel.start_termin2);
assertEquals("end_date1", order.end_date2, orderModel.end_date2);
assertEquals("end_termin1", order.end_termin2, orderModel.end_termin2);
assertEquals("start_date3", order.start_date3, orderModel.start_date3);
assertEquals("start_termin3", order.start_termin3, orderModel.start_termin3);
assertEquals("end_date3", order.end_date3, orderModel.end_date3);
assertEquals("end_termin3", order.end_termin3, orderModel.end_termin3);
assertNotNull("termins", orderModel.termins1);
assertEquals("termins string", "3,6,9,18", orderModel.termins1);
assertNotNull("customer null", orderModel.customer);
assertEquals("customer name", orderModel.customer.name, order.customer.name);
assertEquals("customer username", orderModel.customer.username, order.customer.username);
assertEquals("customer password", orderModel.customer.password, order.customer.password);
assertEquals("customer info", orderModel.customer.info, order.customer.info);
assertNotNull("position null", orderModel.position);
assertEquals("position name", order.position.name, orderModel.position.name);
assertEquals("position lat", order.position.dec.getLatitude(), orderModel.position.latitude, 0.0001);
assertEquals("position lon", order.position.dec.getLongitude(), orderModel.position.longitude, 0.0001);
assertEquals("position name", order.position.name, orderModel.position.name);
assertEquals("info_for_meteorologist", order.info_for_meteorologist, orderModel.info_for_meteorologist);
assertEquals("other_info", order.other_info, orderModel.other_info);
assertNotNull("recipients null", orderModel.recipients);
assertEquals("recipients size", 1, orderModel.recipients.size());
assertEquals("recipient username", "leifj@met.no", orderModel.recipients.get(0).email);
}
}