public interface EmailTemplateDao {
EmailTemplate findByMnemonic(EmailTemplateMnemonic emailTemplateMnemonic);
void setEmailTemplate( EmailTemplate emailTemplate );
EmailTemplate insert();
EmailTemplate update();
void delete( EmailTemplateMnemonic emailTemplateMnemonic );
}
public class EmailTemplateDaoTest {
private Http.Request requestMock = mock(Http.Request.class);
private OrgContext orgContextMock = mock(OrgContext.class);
private AragornDatabaseConnection aragornDatabaseConnection;
private EmailTemplateDao emailTemplateDao;
@Before
public void setup() {
// Define an HTTP.context since our Database Connection is passed around via the ctx() object
Http.Context.current.set( new Http.Context( 1L, null, requestMock, new HashMap<String, String>(), new HashMap<String, String>(), new HashMap<String, Object>() ) );
// Default to OrgId #1
when( orgContextMock.getOrgIdFromRequestHostname() ).thenReturn( 1 );
// Directly instantiate other dependencies
aragornDatabaseConnection = new AragornDatabaseConnectionImpl( orgContextMock );
emailTemplateDao = new EmailTemplateDaoImpl( aragornDatabaseConnection );
}
@Test
public void testInsert() {
running( fakeApplication(), () -> {
aragornDatabaseConnection.setConnection( DB.getConnection( "mydb" ) );
EmailTemplate emailTemplate = new EmailTemplate();
emailTemplate.setEmailTemplateMnemonic( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE.getValue() );
emailTemplate.setFromEmail( "m...@mail.com" );
emailTemplate.setFromName( "Josh Padnick" );
emailTemplate.setMessageBody( "Hello, this is an email!" );
emailTemplate.setMessageSubject( "Testing!" );
emailTemplate.setMetaDescription( "Description here" );
emailTemplate.setMetaTitle( "Test Email" );
emailTemplateDao.setEmailTemplate( emailTemplate );
EmailTemplate emailTemplateInserted = new EmailTemplate();
try {
emailTemplateInserted = emailTemplateDao.insert();
} catch (SQLException e) {
Assert.fail();
}
assertThat( emailTemplateInserted.getEmailTemplateId() ).isNotEqualTo( emailTemplate.getEmailTemplateId() );
assertThat( emailTemplateInserted.getEmailTemplateMnemonic() ).isEqualTo( emailTemplate.getEmailTemplateMnemonic() );
assertThat( emailTemplateInserted.getMessageBody() ).isEqualTo( emailTemplate.getMessageBody() );
});
}
@Test
// Aragorn should not permit the same template to be inserted twice because each mnemonic must be unique
public void testDuplicateInsertThrowsException() {
running( fakeApplication(), () -> {
aragornDatabaseConnection.setConnection( DB.getConnection( "mydb" ) );
// Insert the first template (should succeed)
EmailTemplate emailTemplate = new EmailTemplate();
emailTemplate.setEmailTemplateMnemonic( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE.getValue() );
emailTemplate.setFromEmail( "m...@mail.com" );
emailTemplate.setFromName( "Josh Padnick" );
emailTemplate.setMessageBody( "Hello, this is an email!" );
emailTemplate.setMessageSubject( "Testing!" );
emailTemplate.setMetaDescription( "Description here" );
emailTemplate.setMetaTitle( "Test Email" );
emailTemplateDao.setEmailTemplate( emailTemplate );
try {
emailTemplateDao.insert();
} catch (SQLException e) {
Assert.fail("Failed to insert first EmailTemplate");
}
// Now insert the second, duplicate template (should fail)
EmailTemplate emailTemplateDupe = new EmailTemplate();
emailTemplateDupe.setEmailTemplateMnemonic( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE.getValue() );
emailTemplateDupe.setFromEmail( "mys...@mail.com" );
emailTemplateDupe.setFromName( "Joshua Padnick" );
emailTemplateDupe.setMessageBody( "Hello, this is an email." );
emailTemplateDupe.setMessageSubject( "Testing..." );
emailTemplateDupe.setMetaDescription( "Description here!" );
emailTemplateDupe.setMetaTitle( "Test Email of Amazement" );
emailTemplateDao.setEmailTemplate( emailTemplateDupe );
try {
emailTemplateDao.insert();
} catch (SQLException | org.jooq.exception.DataAccessException e) {
// We don't permit the same mnemonic to be entered twice
Assert.assertTrue( e.getMessage().contains( "violates unique constraint" ) );
}
});
}
@Test
public void testUpdate() {
running( fakeApplication(), () -> {
aragornDatabaseConnection.setConnection( DB.getConnection( "mydb" ) );
// Insert the first template (should succeed)
EmailTemplate emailTemplate = new EmailTemplate();
emailTemplate.setEmailTemplateMnemonic( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE.getValue() );
emailTemplate.setFromEmail( "m...@mail.com" );
emailTemplate.setFromName( "Josh Padnick" );
emailTemplate.setMessageBody( "Hello, this is an email!" );
emailTemplate.setMessageSubject( "Testing!" );
emailTemplate.setMetaDescription( "Description here" );
emailTemplate.setMetaTitle( "Test Email" );
emailTemplateDao.setEmailTemplate( emailTemplate );
try {
emailTemplateDao.insert();
} catch (SQLException e) {
Assert.fail("Failed to insert first EmailTemplate");
}
// Now update it
EmailTemplate emailTemplateUpdated = new EmailTemplate();
emailTemplateUpdated.setEmailTemplateMnemonic( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE.getValue() );
emailTemplateUpdated.setFromEmail( "mys...@mail.com" );
emailTemplateUpdated.setFromName( "Joshua Padnick" );
emailTemplateUpdated.setMessageBody( "Hello!" );
emailTemplateUpdated.setMessageSubject( "Hola!" );
emailTemplateUpdated.setMetaDescription( "Description here" );
emailTemplateUpdated.setMetaTitle( "Test Email" );
emailTemplateDao.setEmailTemplate( emailTemplateUpdated );
EmailTemplate emailTemplateUpdatedResponse = new EmailTemplate();
try {
emailTemplateUpdatedResponse = emailTemplateDao.update();
} catch (SQLException e) {
Assert.fail();
}
assertThat( emailTemplateUpdatedResponse.getFromEmail().equals( "mys...@mail.com" ) );
assertThat( emailTemplateUpdatedResponse.getFromName().equals( "Joshua Padnick" ) );
});
}
@After
public void teardown() {
running( fakeApplication(), () -> {
aragornDatabaseConnection.setConnection( DB.getConnection( "mydb" ) );
try {
emailTemplateDao.delete( EmailTemplateMnemonic.TEST_EMAIL_TEMPLATE );
} catch (SQLException e) {
Assert.fail();
}
});
}
}
--
You received this message because you are subscribed to the Google Groups "jOOQ User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jooq-user+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.