package validators; import models.OrderModel; import models.PositionModel; import org.joda.time.DateTime; import org.junit.Test; import service.PoseidonService; import util.InMemoryDbTest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import static org.junit.Assert.*; public class OrderValidatorTest extends InMemoryDbTest { public OrderValidatorTest() { } @Test public void testOk(){ try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); PoseidonService.setNow(new DateTime(sdf.parse("2015-11-07"), PoseidonService.getTimeZone())); } catch (ParseException e) { // ignore } OrderValidator validator = new OrderValidator(); OrderModel order = new OrderModel(); order.id = 0L; order.met_ref= "ABC"; order.customer_name ="Leif "; order.customer_phone = "123"; order.customer_email= "leifj@met.no"; order.custref_contractnum = "K123"; order.custref_email = "leifj@met.no"; order.start_date1 = PoseidonService.getNow().withTimeAtStartOfDay().toDate(); order.end_date1 = order.start_date1; order.start_termin1 = 3; order.end_termin1 = 3; order.info_for_meteorologist = "Bla "; order.other_info = ""; order.position = new PositionModel(); order.position_name = ""; ValidationResult result = validator.validateModel(order); assertTrue("Validering feilet", result.ok); assertEquals("validationErrors.size",0,result.validationErrors.size()); } @Test public void testMissingCustref (){ try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); PoseidonService.setNow(new DateTime(sdf.parse("2015-11-07"), PoseidonService.getTimeZone())); } catch (ParseException e) { // ignore } OrderValidator validator = new OrderValidator(); OrderModel order = new OrderModel(); order.id = 0L; order.met_ref = "ABC"; order.customer_name = "Leif "; order.customer_phone = "123"; order.customer_email = "leifj@met.no"; order.custref_po_calloff = null; order.custref_contractnum = null; order.custref_email = null; order.start_date1 = PoseidonService.getNow().withTimeAtStartOfDay().toDate(); order.end_date1 = order.start_date1; order.start_termin1 = 3; order.end_termin1 = 3; order.info_for_meteorologist = "Bla "; order.other_info = ""; order.position = new PositionModel(); order.position_name = ""; ValidationResult result = validator.validateModel(order); assertEquals(false, result.ok); assertEquals("validationErrors.size",1,result.validationErrors.size()); } @Test public void testInvalidDates() { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); PoseidonService.setNow(new DateTime(sdf.parse("2015-11-07"), PoseidonService.getTimeZone())); } catch (ParseException e) { // ignore } OrderValidator validator = new OrderValidator(); OrderModel order = new OrderModel(); order.id = 0L; order.met_ref= "ABC"; order.customer_name ="Leif "; order.customer_phone = "123"; order.customer_email= "leifj@met.no"; order.custref_contractnum = "K123"; order.custref_email = "leifj@met.no"; order.start_date1 = PoseidonService.getNow().withTimeAtStartOfDay().toDate(); // end_date1 is 1 day before start_date1 -- should generate a validation error order.end_date1 = new DateTime(order.start_date1,PoseidonService.getTimeZone()).minusDays(1).toDate() ; order.start_termin1 = 3; order.end_termin1 = 3; order.info_for_meteorologist = "Bla "; order.other_info = ""; order.position = new PositionModel(); order.position_name = ""; ValidationResult result = validator.validateModel(order); assertEquals(false,result.ok); ValidationError error1 = result.validationErrors.get(0); assertNotNull("error1 is null",error1); assertEquals("error1.type",error1.errorType,ValidationErrorType.ORDER_END_BEFORE_START); assertEquals("error1.fieldname","start_date1",error1.fieldName); assertEquals("error1.info","",error1.info); } @Test public void testMultipleCustomerEmails(){ OrderValidator validator = new OrderValidator(); OrderModel order = new OrderModel(); order.id = 0L; order.met_ref= "ABC"; order.customer_name ="Leif "; order.customer_phone = "123"; order.customer_email= "leifj@met.no, a@b.com b@c.com \n d@c.com"; order.custref_contractnum = "K123"; order.custref_email = "leifj@met.no"; order.start_date1 = PoseidonService.getNow().withTimeAtStartOfDay().toDate(); order.start_date1 = PoseidonService.getNow().plusDays(14).withTimeAtStartOfDay().toDate(); order.start_termin1 = 3; order.end_termin1 = 3; order.info_for_meteorologist = "Bla "; order.other_info = ""; order.position = new PositionModel(); order.position_name = ""; ValidationResult result = validator.validateModel(order); assertTrue(result.ok); assertEquals("validationErrors.size",0,result.validationErrors.size()); } @Test public void testMultipleCustomerEmailsWithOneIncorrect(){ OrderValidator validator = new OrderValidator(); OrderModel order = new OrderModel(); order.id = 0L; order.met_ref= "ABC"; order.customer_name ="Leif "; order.customer_phone = "123"; order.customer_email= "leifj@met.no, a@b b@c.com \n d@c.com"; order.custref_contractnum = "K123"; order.custref_email = "leifj@met.no"; order.start_date1 = PoseidonService.getNow().withTimeAtStartOfDay().toDate(); order.start_date1 = PoseidonService.getNow().plusDays(14).withTimeAtStartOfDay().toDate(); order.start_termin1 = 3; order.end_termin1 = 3; order.info_for_meteorologist = "Bla "; order.other_info = ""; order.position = new PositionModel(); order.position_name = ""; ValidationResult result = validator.validateModel(order); assertFalse("Validering er uventet ok",result.ok); assertEquals("Ikke forventet antall valideringsfeil",1,result.validationErrors.size()); ValidationError validationError = result.validationErrors.get(0); assertEquals("Feil valideringsfeiltype",ValidationErrorType.ORDER_INVALID_EMAIL, validationError.errorType); assertEquals("Feil epost","a@b", validationError.info); } }