001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.bo;
017:
018: import static org.kuali.test.fixtures.AccountingLineFixture.LINE;
019:
020: import org.kuali.core.util.ObjectUtils;
021: import org.kuali.kfs.bo.SourceAccountingLine;
022: import org.kuali.kfs.bo.TargetAccountingLine;
023: import org.kuali.kfs.context.KualiTestBase;
024: import org.kuali.module.chart.bo.Account;
025: import org.kuali.module.chart.bo.Chart;
026: import org.kuali.test.ConfigureContext;
027:
028: @ConfigureContext
029: public class AccountingLineBaseTest extends KualiTestBase {
030:
031: public final void testIsLike_sourceVsTarget() {
032: TargetAccountingLine t1 = new TargetAccountingLine();
033: SourceAccountingLine s1 = new SourceAccountingLine();
034:
035: assertFalse(t1.isLike(s1));
036: }
037:
038: public final void testIsLike_emptySource() {
039: SourceAccountingLine s1 = new SourceAccountingLine();
040: SourceAccountingLine s2 = new SourceAccountingLine();
041:
042: assertTrue(s1.isLike(s2));
043: }
044:
045: public final void testIsLike_emptyTarget() {
046: TargetAccountingLine t1 = new TargetAccountingLine();
047: TargetAccountingLine t2 = new TargetAccountingLine();
048:
049: assertTrue(t1.isLike(t2));
050: }
051:
052: public final void testIsLike_nullSource() {
053: SourceAccountingLine s1 = new SourceAccountingLine();
054: SourceAccountingLine s2 = null;
055:
056: assertFalse(s1.isLike(s2));
057: }
058:
059: public final void testIsLike_nullTarget() {
060: TargetAccountingLine t1 = new TargetAccountingLine();
061: TargetAccountingLine t2 = null;
062:
063: assertFalse(t1.isLike(t2));
064: }
065:
066: @SuppressWarnings("deprecation")
067: public final void testIsLike_differentSource_irrelevantDifferences()
068: throws Exception {
069: // create identical source lines
070: SourceAccountingLine s1 = buildSourceLine();
071: SourceAccountingLine s2 = buildSourceLine();
072:
073: // add different irrelevant data
074: Account a1 = new Account();
075: a1.setAccountNumber("a1");
076: s1.setAccount(a1);
077:
078: Account a2 = new Account();
079: a2.setAccountNumber("a2");
080: s2.setAccount(a2);
081:
082: // compare relevant fields
083: assertTrue(s1.isLike(s2));
084: }
085:
086: @SuppressWarnings("deprecation")
087: public final void testIsLike_differentTarget_irrelevantDifferences()
088: throws Exception {
089: TargetAccountingLine t1 = buildTargetLine();
090: TargetAccountingLine t2 = buildTargetLine();
091:
092: // add different irrelevant data
093: Chart c1 = new Chart();
094: c1.setChartOfAccountsCode("c1");
095: t1.setChart(c1);
096:
097: Chart c2 = new Chart();
098: c2.setChartOfAccountsCode("c2");
099: t2.setChart(c2);
100:
101: // compare relevant fields
102: assertTrue(t1.isLike(t2));
103: }
104:
105: public final void testIsLike_differentSource_relevantDifferences()
106: throws Exception {
107: SourceAccountingLine s1 = buildSourceLine();
108: SourceAccountingLine s2 = buildSourceLine();
109:
110: // add relevant differences
111: s1.setAccountNumber("a1");
112: s2.setAccountNumber("a2");
113:
114: // compare relevant fields
115: assertFalse(s1.isLike(s2));
116: }
117:
118: public final void testIsLike_differentTarget_relevantDifferences()
119: throws Exception {
120: TargetAccountingLine t1 = buildTargetLine();
121: TargetAccountingLine t2 = buildTargetLine();
122:
123: // add relevant differences
124: t1.setDocumentNumber("f1");
125: t2.setDocumentNumber("f2");
126:
127: // compare relevant fields
128: assertFalse(t1.isLike(t2));
129: }
130:
131: public final void testIsLike_identicalSource() throws Exception {
132: SourceAccountingLine s1 = buildSourceLine();
133: SourceAccountingLine s2 = buildSourceLine();
134:
135: assertTrue(s1.isLike(s2));
136: }
137:
138: public final void testIsLike_identicalTarget() throws Exception {
139: TargetAccountingLine t1 = buildTargetLine();
140: TargetAccountingLine t2 = buildTargetLine();
141:
142: assertTrue(t1.isLike(t2));
143: }
144:
145: public final void testCopyFrom_null() throws Exception {
146: boolean failedAsExpected = false;
147:
148: SourceAccountingLine s1 = buildSourceLine();
149:
150: try {
151: s1.copyFrom(null);
152: } catch (IllegalArgumentException e) {
153: failedAsExpected = true;
154: }
155:
156: assertTrue(failedAsExpected);
157: }
158:
159: public final void testCopyFrom_differentAccountingLine()
160: throws Exception {
161: SourceAccountingLine s1 = buildSourceLine();
162: s1.setOrganizationReferenceId("A");
163: SourceAccountingLine s2 = (SourceAccountingLine) ObjectUtils
164: .deepCopy(s1);
165: s2.setOrganizationReferenceId("B");
166:
167: assertEquals("A", s1.getOrganizationReferenceId());
168: s1.copyFrom(s2);
169: assertEquals("B", s1.getOrganizationReferenceId());
170: assertTrue(s1.isLike(s2));
171: }
172:
173: private SourceAccountingLine buildSourceLine()
174: throws InstantiationException, IllegalAccessException {
175: return LINE.createSourceAccountingLine();
176: }
177:
178: private TargetAccountingLine buildTargetLine()
179: throws InstantiationException, IllegalAccessException {
180: return LINE.createTargetAccountingLine();
181: }
182: }
|