001: package org.tigris.scarab.om;
002:
003: /* ================================================================
004: * Copyright (c) 2000-2002 CollabNet. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by Collab.Net <http://www.Collab.Net/>."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" or
028: * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
029: * prior written permission of Collab.Net.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of Collab.Net.
047: */
048:
049: import java.util.ArrayList;
050: import java.util.HashMap;
051: import java.util.List;
052: import java.util.Map;
053: import java.util.Set;
054:
055: import org.apache.torque.om.NumberKey;
056: import org.apache.torque.util.Criteria;
057: import org.tigris.scarab.test.BaseScarabTestCase;
058:
059: /**
060: * A Testing Suite for the om.Issue class.
061: *
062: * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
063: * @version $Id: IssueTest.java 9271 2004-11-23 08:35:00Z dep4b $
064: */
065: public class IssueTest extends BaseScarabTestCase {
066: private List issueList = new ArrayList();
067: private Map uniqueIDs;
068: protected static int nbrDfltModules = 7;
069: protected static int nbrDfltIssueTypes = 5;
070:
071: public void setUp() throws Exception {
072: super .setUp();
073: uniqueIDs = new HashMap();
074: createTestIssues();
075: loopThruTestIssues();
076:
077: }
078:
079: private void createTestIssues() throws Exception {
080: // loops thru module and issue type combinations
081: // creates an issue in each combination
082: for (int i = 1; i < nbrDfltModules + 1; i++) {
083: for (int j = 1; j < nbrDfltIssueTypes + 1; j++) {
084: Module module = ScarabModulePeer
085: .retrieveByPK(new NumberKey(Integer.toString(i)));
086: IssueType issueType = IssueTypePeer
087: .retrieveByPK(new NumberKey(Integer.toString(j)));
088: Issue issue = Issue.getNewInstance(module, issueType);
089: issueList.add(issue);
090: }
091: }
092: }
093:
094: private void loopThruTestIssues() throws Exception {
095: for (int i = 1; i < issueList.size(); i++) {
096: Issue issue = (Issue) issueList.get(i);
097: System.out.println("MODULE=" + issue.getModule().getName());
098: System.out.println("ISSUE TYPE = "
099: + issue.getIssueType().getName());
100: String strUniqueID = issue.getUniqueId();
101: System.out.println("Unique id: " + strUniqueID);
102: runTestGetAllAttributeValuesMap(issue);
103: }
104: }
105:
106: private void runTestGetAllAttributeValuesMap(Issue issue)
107: throws Exception {
108: System.out.println("testGetAllAttributeValuesMap()");
109: Map map = issue.getAllAttributeValuesMap();
110: System.out.println("getAllAttributeValuesMap().size(): "
111: + map.size());
112: int expectedSize = 12;
113: switch (Integer.parseInt(issue.getTypeId().toString())) {
114: case 1:
115: expectedSize = 12;
116: break;
117: case 2:
118: expectedSize = 12;
119: break;
120: case 3:
121: expectedSize = 11;
122: break;
123: case 4:
124: expectedSize = 11;
125: break;
126: case 5:
127: expectedSize = 9;
128: break;
129: case 6:
130: expectedSize = 9;
131: break;
132: case 7:
133: expectedSize = 9;
134: break;
135: case 8:
136: expectedSize = 9;
137: break;
138: case 9:
139: expectedSize = 9;
140: break;
141: case 10:
142: expectedSize = 9;
143: }
144: //assertEquals("issue.getTypeId():" + issue.getTypeId(),expectedSize, map.size());
145: assertTrue("issue.getTypeId():" + issue.getTypeId(),
146: map.size() > 4);
147: }
148:
149: private void assignUser() throws Exception {
150: System.out.println("assignUser()");
151: Attribute assignAttr = getAssignAttribute();
152: ScarabUser assigner = getUser1();
153: ScarabUser assignee = getUser2();
154: getIssue0().assignUser(null, assigner, assignee, assignAttr,
155: getAttachment(assigner));
156: }
157:
158: public void testGetAssociatedUsers() throws Exception {
159: System.out.println("testAssociatedUsers()");
160: assignUser();
161: assertEquals(getIssue0().getAssociatedUsers().size(), 1);
162: List pair = (List) getIssue0().getAssociatedUsers().iterator()
163: .next();
164: assertEquals(pair.get(1), getUser1());
165: }
166:
167: public void OFFtestChangeUserAttributeValue() throws Exception {
168: System.out.println("testChangeUserAttributeValue()");
169: assignUser();
170: Attribute assignAttr = getAssignAttribute();
171: Attribute ccAttr = getCcAttribute();
172: ScarabUser assigner = getUser1();
173: ScarabUser assignee = getUser2();
174: AttributeValue attVal = getIssue0().getAttributeValue(
175: assignAttr);
176: getIssue0().changeUserAttributeValue(null, assigner, assignee,
177: attVal, ccAttr, getAttachment(assigner));
178: List pair = (List) getIssue0().getAssociatedUsers().iterator()
179: .next();
180: assertEquals(pair.get(0), ccAttr);
181: }
182:
183: public void OFFtestDeleteUser() throws Exception {
184: System.out.println("testDeleteUser()");
185: Attribute assignAttr = getAssignAttribute();
186: ScarabUser assigner = getUser1();
187: AttributeValue attVal = getIssue0().getAttributeValue(
188: assignAttr);
189: getIssue0().deleteUser(null, getUser1(), getUser2(), attVal,
190: getAttachment(assigner));
191: assertEquals(getIssue0().getAssociatedUsers().size(), 0);
192: }
193:
194: public void testGetUserAttributeValues() throws Exception {
195: System.out.println("testAssociatedUsers()");
196: assignUser();
197: List attVals = getIssue0().getUserAttributeValues();
198: AttributeValue attVal = (AttributeValue) attVals.get(0);
199: assertEquals(attVal.getAttributeId().toString(), "2");
200: }
201:
202: public void testGetEligibleUsers() throws Exception {
203: System.out.println("testGetEligibleUsers()");
204: assignUser();
205: List users = getIssue0().getEligibleUsers(getAssignAttribute());
206: assertTrue(users.size() > 0);
207: }
208:
209: public void testGetUsersToEmail() throws Exception {
210: System.out.println("testGetUsersToEmail()");
211: assignUser();
212: Set users = getIssue0().getUsersToEmail(AttributePeer.EMAIL_TO,
213: getIssue0(), null);
214: assertEquals(users.size(), 2);
215: }
216:
217: private Attachment getAttachment(ScarabUser assigner)
218: throws Exception {
219: Attachment attachment = new Attachment();
220: attachment.setData("test reason");
221: attachment.setName("comment");
222: attachment.setTextFields(assigner, getIssue0(),
223: Attachment.MODIFICATION__PK);
224: attachment.save();
225: return attachment;
226: }
227:
228: public void testCounts() throws Exception {
229: System.out.println("Testing IssuePeer count methods");
230: assignUser();
231: int count = IssuePeer.count(new Criteria());
232: assertTrue("IssuePeer.count(new Criteria()) returned " + count,
233: count > 0);
234: count = IssuePeer.countDistinct(new Criteria());
235: assertTrue("IssuePeer.countDistinct(new Criteria()) returned "
236: + count, count > 0);
237: }
238:
239: protected ScarabUser getUser2() throws Exception {
240: return ScarabUserManager.getInstance(new NumberKey(2), false);
241:
242: }
243:
244: protected Attribute getAssignAttribute() throws Exception {
245: return AttributeManager.getInstance(new NumberKey(2));
246: }
247:
248: protected Attribute getCcAttribute() throws Exception {
249:
250: return AttributeManager.getInstance(new NumberKey(13));
251:
252: }
253: }
|