/* * Copyright 2012 PRODYNA AG * * Licensed under the Eclipse Public License (EPL), Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php or * http://www.nabucco.org/License.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.nabucco.framework.common.dynamiccode.service.maintain; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.nabucco.framework.base.facade.datatype.DatatypeState; import org.nabucco.framework.base.facade.message.ServiceRequest; import org.nabucco.framework.base.facade.message.ServiceResponse; import org.nabucco.framework.base.test.RuntimeTestSupport; import org.nabucco.framework.common.dynamiccode.facade.component.DynamicCodeComponent; import org.nabucco.framework.common.dynamiccode.facade.component.DynamicCodeComponentLocator; import org.nabucco.framework.common.dynamiccode.facade.datatype.DynamicCodeCode; import org.nabucco.framework.common.dynamiccode.facade.datatype.DynamicCodeCodeGroup; import org.nabucco.framework.common.dynamiccode.facade.message.maintain.DynamicCodeCodeGroupMaintainMsg; import org.nabucco.framework.common.dynamiccode.facade.message.maintain.DynamicCodeCodeMaintainMsg; import org.nabucco.framework.common.dynamiccode.util.DynamicCodeTestUtility; /** * MaintainDynamicCodeComplexTest * * @author Nicolas Moser, PRODYNA AG */ public class MaintainDynamicCodeComplexTest extends RuntimeTestSupport { private DynamicCodeComponent component; @Before public void testDynamicCodeLookup() throws Exception { this.component = super.getComponent(DynamicCodeComponentLocator.getInstance()); } @Test public void testCodeInGroupInGroup() throws Exception { DynamicCodeCodeGroup parent = DynamicCodeTestUtility.dummyCodeGroup("Parent"); DynamicCodeCodeGroup child = DynamicCodeTestUtility.dummyCodeGroup("Child"); parent.getCodeGroupList().add(child); DynamicCodeCode codeA = DynamicCodeTestUtility.dummyCode("Code A"); child.getCodeList().add(codeA); DynamicCodeCode codeB = DynamicCodeTestUtility.dummyCode("Code B"); child.getCodeList().add(codeB); DynamicCodeCodeGroupMaintainMsg msg = new DynamicCodeCodeGroupMaintainMsg(); msg.setCodeGroup(parent); ServiceRequest<DynamicCodeCodeGroupMaintainMsg> rq = new ServiceRequest<DynamicCodeCodeGroupMaintainMsg>( super.getServiceContext()); rq.setRequestMessage(msg); ServiceResponse<DynamicCodeCodeGroupMaintainMsg> rs = this.component.getMaintainDynamicCode() .maintainDynamicCodeCodeGroup(rq); Assert.assertNotNull(rs); Assert.assertNotNull(rs.getResponseMessage()); parent = rs.getResponseMessage().getCodeGroup(); Assert.assertNotNull(parent); Assert.assertEquals(1, parent.getCodeGroupList().size()); child = parent.getCodeGroupList().get(0); Assert.assertNotNull(child); Assert.assertNotNull(child.getId()); Assert.assertEquals(DatatypeState.PERSISTENT, child.getDatatypeState()); Assert.assertEquals(2, child.getCodeList().size()); codeA = child.getCodeList().get(0); codeB = child.getCodeList().get(1); Assert.assertNotNull(codeA); Assert.assertNotNull(codeA.getId()); Assert.assertEquals(DatatypeState.PERSISTENT, codeA.getDatatypeState()); Assert.assertNotNull(codeB); Assert.assertNotNull(codeB.getId()); Assert.assertEquals(DatatypeState.PERSISTENT, codeB.getDatatypeState()); DynamicCodeTestUtility.removeCodeGroup(this.component, parent); } @Test public void testCodeInGroup() throws Exception { DynamicCodeCodeGroup group = DynamicCodeTestUtility.dummyCodeGroup("Group"); group = DynamicCodeTestUtility.createCodeGroup(this.component, group); Assert.assertEquals(0, group.getVersion().longValue()); DynamicCodeCode code = DynamicCodeTestUtility.dummyCode("Code"); DynamicCodeCodeMaintainMsg msg = new DynamicCodeCodeMaintainMsg(); msg.setCode(code); msg.setParentGroup(group); ServiceRequest<DynamicCodeCodeMaintainMsg> rq = new ServiceRequest<DynamicCodeCodeMaintainMsg>( super.getServiceContext()); rq.setRequestMessage(msg); ServiceResponse<DynamicCodeCodeMaintainMsg> rs = this.component.getMaintainDynamicCode() .maintainDynamicCodeCode(rq); Assert.assertNotNull(rs); Assert.assertNotNull(rs.getResponseMessage()); group = rs.getResponseMessage().getParentGroup(); Assert.assertNotNull(group); Assert.assertEquals(1, group.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, group.getDatatypeState()); Assert.assertEquals(1, group.getCodeList().size()); code = group.getCodeList().get(0); Assert.assertNotNull(code); Assert.assertNotNull(code.getId()); Assert.assertEquals(0, code.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, code.getDatatypeState()); code = rs.getResponseMessage().getCode(); Assert.assertNotNull(code); Assert.assertNotNull(code.getId()); Assert.assertEquals(0, code.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, code.getDatatypeState()); DynamicCodeTestUtility.removeCodeGroup(this.component, group); } @Test public void testGroupInGroup() throws Exception { DynamicCodeCodeGroup parent = DynamicCodeTestUtility.dummyCodeGroup("Parent"); parent = DynamicCodeTestUtility.createCodeGroup(this.component, parent); Assert.assertEquals(0, parent.getVersion().longValue()); DynamicCodeCodeGroup child = DynamicCodeTestUtility.dummyCodeGroup("Child"); DynamicCodeCodeGroupMaintainMsg msg = new DynamicCodeCodeGroupMaintainMsg(); msg.setCodeGroup(child); msg.setParentGroup(parent); ServiceRequest<DynamicCodeCodeGroupMaintainMsg> rq = new ServiceRequest<DynamicCodeCodeGroupMaintainMsg>( super.getServiceContext()); rq.setRequestMessage(msg); ServiceResponse<DynamicCodeCodeGroupMaintainMsg> rs = this.component.getMaintainDynamicCode() .maintainDynamicCodeCodeGroup(rq); Assert.assertNotNull(rs); Assert.assertNotNull(rs.getResponseMessage()); parent = rs.getResponseMessage().getParentGroup(); Assert.assertNotNull(parent); Assert.assertEquals(1, parent.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, parent.getDatatypeState()); Assert.assertEquals(1, parent.getCodeGroupList().size()); child = parent.getCodeGroupList().get(0); Assert.assertNotNull(child); Assert.assertNotNull(child.getId()); Assert.assertEquals(0, child.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, child.getDatatypeState()); child = rs.getResponseMessage().getCodeGroup(); Assert.assertNotNull(child); Assert.assertNotNull(child.getId()); Assert.assertEquals(0, child.getVersion().longValue()); Assert.assertEquals(DatatypeState.PERSISTENT, child.getDatatypeState()); DynamicCodeTestUtility.removeCodeGroup(this.component, parent); } }