/* * codjo.net * * Common Apache License 2.0 */ package triggers; import net.codjo.tokio.TokioFixture; import java.sql.SQLException; import junit.framework.TestCase; /** * Test du trigger de mise � jour de la table PM_CLASSIFICATION_STRUCTURE. * * @version $Revision: 1.2 $ */ public class PmClassStructureUTest extends TestCase { private TokioFixture tokioFixture = new TokioFixture(PmClassStructureUTest.class); public void test_update_sleeve_name() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_NOM_DE_POCHE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET SLEEVE_NAME='NEW NAME', SLEEVE_DUSTBIN=1 WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("MISE_A_JOUR_NOM_DE_POCHE"); } public void test_update_sleeve_code_for_dustbin() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_CODE_POCHE_FOURRETOUT", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET SLEEVE_CODE='01-2' WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("MISE_A_JOUR_CODE_POCHE_FOURRETOUT"); } public void test_update_sleeve_code() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_CODE_POCHE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET SLEEVE_CODE='01-2' WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("MISE_A_JOUR_CODE_POCHE"); } public void test_update_formula() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_FORMULE_UNIQUEMENT", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='action.PREV_AMOUNT > 90000' WHERE SLEEVE_ID=111"); tokioFixture.assertAllOutputs("MISE_A_JOUR_FORMULE_UNIQUEMENT"); } public void test_update_dustbin_to_normal() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_FOURRE_TOUT_EN_NORMAL", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='action.PREV_AMOUNT > 300000', SLEEVE_DUSTBIN=0 WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("MISE_A_JOUR_FOURRE_TOUT_EN_NORMAL"); } public void test_update_normal_to_dustbin() throws Exception { tokioFixture.insertInputInDb("MISE_A_JOUR_NORMAL_EN_FOURRE_TOUT", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA=NULL, SLEEVE_DUSTBIN=1 WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("MISE_A_JOUR_NORMAL_EN_FOURRE_TOUT"); } public void test_update_with_simpleIncludes() throws Exception { tokioFixture.insertInputInDb("WITH_SIMPLE_INCLUDE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='SRC_SEG_INPUT_ACTION$REFERENTIAL_FUND_PRICE>=10000 && INC_$$4$1234567891234 && VAR_myVariable==\"1\"' WHERE CLASSIFICATION_ID=3 and SLEEVE_CODE='01-1'"); tokioFixture.assertAllOutputs("WITH_SIMPLE_INCLUDE"); } public void test_update_with_includes() throws Exception { tokioFixture.insertInputInDb("WITH_INCLUDE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='INC_$$4$1234567891234 || INC_$$4$1234567891235' WHERE SLEEVE_ID=110"); tokioFixture.assertAllOutputs("WITH_INCLUDE"); } public void test_update_dustbin_with_includes() throws Exception { tokioFixture.insertInputInDb("DUSTBIN_WITH_INCLUDE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET SLEEVE_DUSTBIN = 0, FORMULA='INC_$$4$1234567891234 and INC_$$4$1234567891235' WHERE SLEEVE_ID=120"); tokioFixture.assertAllOutputs("DUSTBIN_WITH_INCLUDE"); } public void test_update_recursive_with_includes() throws Exception { tokioFixture.insertInputInDb("MAJ_FORMULE_WITH_RECURSIVE_INCLUDE", false); tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='999==123' WHERE SLEEVE_ID=130"); tokioFixture.assertAllOutputs("MAJ_FORMULE_WITH_RECURSIVE_INCLUDE"); } public void test_update_cyclic_prohibited() throws Exception { tokioFixture.insertInputInDb("TEST_POCHE_NON_RECURSIVE", false); try { tokioFixture.executeQuery( "UPDATE PM_CLASSIFICATION_STRUCTURE SET FORMULA='INC_$$2$1234567891239' WHERE SLEEVE_ID=130"); fail(); } catch (SQLException e) { assertEquals( "Vous ne pouvez pas cr�er de r�f�rence cyclique entre la poche 'AXE 4 POCHE 1' de cet axe " + "et la poche 'AXE 3 POCHE 1' de l'axe 'R�partition par fourchettes de co�ts'." , e.getLocalizedMessage()); } tokioFixture.assertAllOutputs("TEST_POCHE_NON_RECURSIVE"); } @Override protected void setUp() throws Exception { tokioFixture.doSetUp(); tokioFixture.insertInputInDb("common", true); } @Override protected void tearDown() throws Exception { tokioFixture.doTearDown(); } }