package com.linkedin.thirdeye.datalayer.bao;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.linkedin.thirdeye.datalayer.dto.AnomalyFunctionDTO;
import com.linkedin.thirdeye.datalayer.dto.EmailConfigurationDTO;
public class TestEmailConfigurationManager extends AbstractManagerTestBase {
Long emailConfigId, functionId;
private static String collection = "my dataset";
private static String metricName = "__counts";
@BeforeClass
void beforeClass() {
super.init();
}
@AfterClass(alwaysRun = true)
void afterClass() {
super.cleanup();
}
@Test
public void testCreateEmailConfig() {
EmailConfigurationDTO request = getTestEmailConfiguration(metricName, collection);
emailConfigId = emailConfigurationDAO.save(request);
assertNotNull(emailConfigId);
}
@Test (dependsOnMethods = {"testCreateEmailConfig"})
public void testFunctionEmailAssignment() {
// create function
AnomalyFunctionDTO functionReq = getTestFunctionSpec("testMetric", "testCollection");
functionId = anomalyFunctionDAO.save(functionReq);
assertNotNull(functionId);
// save function in EmailConfig
EmailConfigurationDTO emailConfiguration = emailConfigurationDAO.findById(emailConfigId);
AnomalyFunctionDTO anomalyFunctionSpec = anomalyFunctionDAO.findById(functionId);
assertEquals(emailConfiguration.getFunctions().size(), 0);
List<AnomalyFunctionDTO> functionSpecList = new ArrayList<>();
functionSpecList.add(anomalyFunctionSpec);
emailConfiguration.setFunctions(functionSpecList);
emailConfigurationDAO.save(emailConfiguration);
// Validate relation in both Email and Function objects
EmailConfigurationDTO emailConfig1 = emailConfigurationDAO.findById(emailConfigId);
assertEquals(emailConfig1.getFunctions().size(), 1);
}
@Test(dependsOnMethods = { "testFunctionEmailAssignment" })
public void testFindByFunctionId() {
List<EmailConfigurationDTO> emailConfigurations =
emailConfigurationDAO.findByFunctionId(functionId);
assertEquals(emailConfigurations.size(), 1);
}
@Test(dependsOnMethods = { "testFindByFunctionId" })
public void testDelete() {
emailConfigurationDAO.deleteById(emailConfigId);
EmailConfigurationDTO emailConfiguration = emailConfigurationDAO.findById(emailConfigId);
AnomalyFunctionDTO anomalyFunctionSpec = anomalyFunctionDAO.findById(functionId);
// email configuration should be deleted and anomaly function should not.
assertNull(emailConfiguration);
assertNotNull(anomalyFunctionSpec);
// now cleanup the anomaly function
anomalyFunctionDAO.deleteById(anomalyFunctionSpec.getId());
}
}