1
package org.hisp.dhis.ouwt.manager;
4
* Copyright (c) 2004-2007, University of Oslo
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
* * Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* * Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
* * Neither the name of the HISP project nor the names of its contributors may
15
* be used to endorse or promote products derived from this software without
16
* specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
import java.util.Collection;
31
import java.util.Date;
32
import java.util.HashSet;
35
import org.hisp.dhis.DhisSpringTest;
36
import org.hisp.dhis.organisationunit.OrganisationUnit;
37
import org.hisp.dhis.organisationunit.OrganisationUnitService;
38
import org.hisp.dhis.transaction.TransactionManager;
41
* @author Torgeir Lorange Ostby
42
* @version $Id: OrganisationUnitSelectionManagerTest.java 6335 2008-11-20 11:11:26Z larshelg $
44
public class OrganisationUnitSelectionManagerTest
45
extends DhisSpringTest
47
private OrganisationUnitService organisationUnitService;
49
private TransactionManager transactionManager;
51
private OrganisationUnitSelectionManager selectionManager;
53
public void setUpTest()
56
organisationUnitService = (OrganisationUnitService) getBean( OrganisationUnitService.ID );
58
transactionManager = (TransactionManager) getBean( TransactionManager.ID );
60
// ---------------------------------------------------------------------
61
// Have to replace the session part with a dummy
62
// ---------------------------------------------------------------------
64
SessionReplacerOUSManager selectionManager = new SessionReplacerOUSManager();
65
selectionManager.setOrganisationUnitService( organisationUnitService );
66
this.selectionManager = selectionManager;
68
// ---------------------------------------------------------------------
69
// Add a couple of org units
70
// ---------------------------------------------------------------------
72
transactionManager.enter();
73
OrganisationUnit parentUnit = new OrganisationUnit( "OrganisationUnit1", "OrgUnit1", "OU1", new Date(),
74
new Date(), true, "Comment1" );
75
organisationUnitService.addOrganisationUnit( parentUnit );
76
OrganisationUnit childUnit = new OrganisationUnit( "OrganisationUnit2", parentUnit, "OrgUnit2", "OU2",
77
new Date(), new Date(), true, "Comment2" );
78
parentUnit.getChildren().add( childUnit );
79
organisationUnitService.addOrganisationUnit( childUnit );
80
transactionManager.leave();
83
public void testRoot()
86
transactionManager.enter();
87
OrganisationUnit rootUnit = getSingleRootOrganisationUnit();
88
OrganisationUnit child = rootUnit.getChildren().iterator().next();
89
transactionManager.leave();
91
assertNotNull( rootUnit );
93
transactionManager.enter();
94
setSingleRootOrganisationUnitParent( child );
95
assertEquals( child.getId(), getSingleRootOrganisationUnit().getId() );
96
transactionManager.leave();
98
transactionManager.enter();
99
selectionManager.resetRootOrganisationUnits();
100
assertEquals( rootUnit.getId(), getSingleRootOrganisationUnit().getId() );
101
transactionManager.leave();
104
public void testSelection()
107
transactionManager.enter();
108
assertTrue( selectionManager.getSelectedOrganisationUnits().isEmpty() );
109
transactionManager.leave();
111
transactionManager.enter();
112
OrganisationUnit rootUnit = getSingleRootOrganisationUnit();
113
OrganisationUnit child = rootUnit.getChildren().iterator().next();
114
transactionManager.leave();
116
transactionManager.enter();
117
setSingleSelectedOrganisationUnit( child );
118
assertEquals( child.getId(), getSingleSelectedOrganisationUnit().getId() );
119
transactionManager.leave();
121
transactionManager.enter();
122
selectionManager.clearSelectedOrganisationUnits();
123
assertTrue( selectionManager.getSelectedOrganisationUnits().isEmpty() );
124
transactionManager.leave();
127
public void testParentChildPaths()
130
transactionManager.enter();
131
OrganisationUnit rootUnit = getSingleRootOrganisationUnit();
132
OrganisationUnit child = rootUnit.getChildren().iterator().next();
133
transactionManager.leave();
135
transactionManager.enter();
136
setSingleRootOrganisationUnitParent( rootUnit );
137
setSingleSelectedOrganisationUnit( child );
138
assertEquals( rootUnit.getId(), getSingleRootOrganisationUnit().getId() );
139
assertEquals( child.getId(), getSingleSelectedOrganisationUnit().getId() );
140
transactionManager.leave();
142
transactionManager.enter();
143
setSingleRootOrganisationUnitParent( child );
144
assertEquals( child.getId(), getSingleRootOrganisationUnit().getId() );
145
assertNull( getSingleSelectedOrganisationUnit() );
146
transactionManager.leave();
148
transactionManager.enter();
149
setSingleSelectedOrganisationUnit( rootUnit );
150
//assertTrue( selectionManager.getSelectedOrganisationUnits().size() == 0 );
151
transactionManager.leave();
153
transactionManager.enter();
154
setSingleRootOrganisationUnitParent( rootUnit );
155
setSingleSelectedOrganisationUnit( rootUnit );
156
assertEquals( rootUnit.getId(), getSingleRootOrganisationUnit().getId() );
157
assertEquals( rootUnit.getId(), getSingleSelectedOrganisationUnit().getId() );
158
transactionManager.leave();
160
transactionManager.enter();
161
setSingleRootOrganisationUnitParent( child );
162
assertEquals( child.getId(), getSingleRootOrganisationUnit().getId() );
163
assertNull( getSingleSelectedOrganisationUnit() );
164
transactionManager.leave();
167
private void setSingleRootOrganisationUnitParent( OrganisationUnit unit )
170
OrganisationUnit parent = unit.getParent();
172
if ( parent == null )
174
selectionManager.resetRootOrganisationUnits();
178
selectionManager.setRootOrganisationUnitsParent( parent );
182
private void setSingleSelectedOrganisationUnit( OrganisationUnit unit )
185
Set<OrganisationUnit> selectedUnits = new HashSet<OrganisationUnit>( 1 );
186
selectedUnits.add( unit );
187
selectionManager.setSelectedOrganisationUnits( selectedUnits );
190
private OrganisationUnit getSingleRootOrganisationUnit()
193
Collection<OrganisationUnit> rootUnits = getRootOrganisationUnits();
195
return rootUnits.iterator().next();
198
private OrganisationUnit getSingleSelectedOrganisationUnit()
201
Collection<OrganisationUnit> selectedUnits = selectionManager.getSelectedOrganisationUnits();
203
if ( selectedUnits.isEmpty() )
207
return selectedUnits.iterator().next();
210
private Collection<OrganisationUnit> getRootOrganisationUnits()
213
return selectionManager.getRootOrganisationUnits();