1 package com.atlassian.core.ofbiz.association;
2
3 import junit.framework.TestCase;
4 import com.atlassian.core.ofbiz.test.mock.MockGenericValue;
5 import com.atlassian.core.util.collection.EasyList;
6
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Collections;
10
11 import org.ofbiz.core.entity.GenericEntityException;
12
13 public class TestDefaultAssociationManager extends TestCase
14 {
15 private static class LocalBoolean
16 {
17 private boolean value;
18
19 private LocalBoolean(final boolean value)
20 {
21 this.value = value;
22 }
23
24 public boolean get()
25 {
26 return value;
27 }
28
29 public void set(final boolean value)
30 {
31 this.value = value;
32 }
33
34 }
35
36
37 public void testGetUsernamesFromSinkNullSink() throws Exception
38 {
39 try
40 {
41 new DefaultAssociationManager().getUsernamesFromSink(null, null, false, false);
42 }
43 catch (IllegalArgumentException e)
44 {
45
46 }
47 }
48
49 public void testGetUsernamesFromSinkNoResults() throws Exception
50 {
51 final LocalBoolean methodCalled = new LocalBoolean(false);
52
53 final MockGenericValue sink = new MockGenericValue("name");
54 sink.set("id", new Long(123));
55
56 final String associationType = "type";
57 final boolean useCache = true;
58 final boolean useSequence = false;
59
60 DefaultAssociationManager manager = new DefaultAssociationManager()
61 {
62 List getAssociations(String associationName, Map fields, boolean uc, boolean us)
63 throws GenericEntityException
64 {
65 methodCalled.set(true);
66 assertEquals("UserAssociation", associationName);
67 assertNotNull(fields);
68 assertEquals(3, fields.size());
69 assertTrue(fields.containsKey("sinkNodeId"));
70 assertTrue(fields.containsKey("sinkNodeEntity"));
71 assertTrue(fields.containsKey("associationType"));
72 assertEquals(new Long(123), fields.get("sinkNodeId"));
73 assertEquals("name", fields.get("sinkNodeEntity"));
74 assertEquals(associationType, fields.get("associationType"));
75 assertEquals(useCache, uc);
76 assertEquals(useSequence, us);
77 return Collections.EMPTY_LIST;
78 }
79 };
80 final List usernames = manager.getUsernamesFromSink(sink, associationType, useCache, useSequence);
81 assertNotNull(usernames);
82 assertTrue(usernames.isEmpty());
83 assertTrue(methodCalled.get());
84 }
85
86 public void testGetUsernamesFromSink() throws Exception
87 {
88 final String username = "fred";
89
90 final LocalBoolean methodCalled = new LocalBoolean(false);
91
92 final MockGenericValue sink = new MockGenericValue("name");
93 sink.set("id", new Long(123));
94
95 final String associationType = "type";
96 final boolean useCache = true;
97 final boolean useSequence = false;
98
99 DefaultAssociationManager manager = new DefaultAssociationManager()
100 {
101 List getAssociations(String associationName, Map fields, boolean uc, boolean us)
102 throws GenericEntityException
103 {
104 methodCalled.set(true);
105 assertEquals("UserAssociation", associationName);
106 assertNotNull(fields);
107 assertEquals(3, fields.size());
108 assertTrue(fields.containsKey("sinkNodeId"));
109 assertTrue(fields.containsKey("sinkNodeEntity"));
110 assertTrue(fields.containsKey("associationType"));
111 assertEquals(new Long(123), fields.get("sinkNodeId"));
112 assertEquals("name", fields.get("sinkNodeEntity"));
113 assertEquals(associationType, fields.get("associationType"));
114 assertEquals(useCache, uc);
115 assertEquals(useSequence, us);
116
117 final MockGenericValue association = new MockGenericValue("assoc");
118 association.setString("sourceName", username);
119 return EasyList.build(association);
120 }
121 };
122 final List usernames = manager.getUsernamesFromSink(sink, associationType, useCache, useSequence);
123 assertNotNull(usernames);
124 assertFalse(usernames.isEmpty());
125 assertEquals(username, usernames.get(0));
126 assertTrue(methodCalled.get());
127 }
128
129
130 }