~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to dhis-2/dhis-services/dhis-service-organisationunit/src/test/java/org/hisp/dhis/organisationunit/OrganisationUnitServiceTest.java

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hisp.dhis.organisationunit;
 
2
 
 
3
/*
 
4
 * Copyright (c) 2004-2007, University of Oslo
 
5
 * All rights reserved.
 
6
 *
 
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.
 
17
 *
 
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.
 
28
 */
 
29
 
 
30
import java.util.Calendar;
 
31
import java.util.Collection;
 
32
import java.util.Date;
 
33
import java.util.GregorianCalendar;
 
34
import java.util.Iterator;
 
35
import java.util.List;
 
36
 
 
37
import org.hisp.dhis.DhisConvenienceTest;
 
38
import org.hisp.dhis.system.session.SessionUtil;
 
39
 
 
40
/**
 
41
 * @author Kristian Nordal
 
42
 * @version $Id: OrganisationUnitServiceTest.java 6251 2008-11-10 14:37:05Z larshelg $
 
43
 */
 
44
public class OrganisationUnitServiceTest
 
45
    extends DhisConvenienceTest
 
46
{
 
47
    private OrganisationUnitService organisationUnitService;
 
48
 
 
49
    private OrganisationUnitGroupService organisationUnitGroupService;
 
50
    
 
51
    private SessionUtil sessionUtil;
 
52
 
 
53
    public void setUpTest()
 
54
        throws Exception
 
55
    {
 
56
        organisationUnitService = (OrganisationUnitService) getBean( OrganisationUnitService.ID );
 
57
 
 
58
        organisationUnitGroupService = (OrganisationUnitGroupService) getBean( OrganisationUnitGroupService.ID );
 
59
        
 
60
        organisationUnitService.removeOrganisationUnitHierarchies( OrganisationUnitHierarchyVerifier.START_OF_TIME );
 
61
                
 
62
        sessionUtil = (SessionUtil) getBean( SessionUtil.ID );
 
63
    }
 
64
 
 
65
    // -------------------------------------------------------------------------
 
66
    // OrganisationUnit
 
67
    // -------------------------------------------------------------------------
 
68
 
 
69
    public void testBasicOrganisationUnitCoarseGrained()
 
70
        throws Exception
 
71
    {
 
72
        // Single OrganisationUnit
 
73
        String organisationUnitName1 = "organisationUnitName1";
 
74
        OrganisationUnit organisationUnit1 = new OrganisationUnit( organisationUnitName1, "shortName1",
 
75
            "organisationUnitCode1", new Date(), new Date(), true, "comment" );
 
76
        OrganisationUnit organisationUnit1b = new OrganisationUnit( organisationUnitName1, "shortName1",
 
77
            "organisationUnitCode1", new Date(), new Date(), true, "comment" );
 
78
 
 
79
        int id1 = organisationUnitService.addOrganisationUnit( organisationUnit1 );
 
80
 
 
81
        // assert getOrganisationUnit
 
82
        assertNotNull( organisationUnitService.getOrganisationUnit( id1 ) );
 
83
 
 
84
        // assert unique constraint
 
85
        try
 
86
        {
 
87
            organisationUnitService.addOrganisationUnit( organisationUnit1b );
 
88
            fail( "Expected exception" );
 
89
        }
 
90
        catch ( Exception ex )
 
91
        {
 
92
            // expected
 
93
        }
 
94
 
 
95
        assertNull( organisationUnitService.getOrganisationUnit( -1 ) );
 
96
 
 
97
        organisationUnit1 = organisationUnitService.getOrganisationUnit( id1 );
 
98
 
 
99
        // OrganisationUnit with parent
 
100
        String organisationUnitName2 = "organisationUnitName2";
 
101
        OrganisationUnit organisationUnit2 = new OrganisationUnit( organisationUnitName2, organisationUnit1,
 
102
            "shortName2", "organisationUnitCode2", new Date(), new Date(), true, "comment" );
 
103
        
 
104
        int id2 = organisationUnitService.addOrganisationUnit( organisationUnit2 );
 
105
 
 
106
        assertTrue( organisationUnitService.getOrganisationUnit( id2 ).getParent().getId() == id1 );
 
107
        assertTrue( organisationUnitService.getOrganisationUnit( id1 ).getChildren().contains(
 
108
            organisationUnitService.getOrganisationUnit( id2 ) ) );
 
109
 
 
110
        organisationUnitService.deleteOrganisationUnit( organisationUnitService.getOrganisationUnit( id2 ) );
 
111
        
 
112
        organisationUnitService.deleteOrganisationUnit( organisationUnitService.getOrganisationUnit( id1 ) );
 
113
        
 
114
        // assert delOrganisationUnit
 
115
        assertNull( organisationUnitService.getOrganisationUnit( id1 ) );
 
116
        assertNull( organisationUnitService.getOrganisationUnit( id2 ) );
 
117
    }
 
118
 
 
119
    public void testUpdateOrganisationUnit()
 
120
        throws Exception
 
121
    {
 
122
        String name = "name";
 
123
        String shortName = "shortName";
 
124
        String updatedName = "updatedName";
 
125
        String updatedShortName = "updatedShortName";
 
126
 
 
127
        OrganisationUnit organisationUnit = new OrganisationUnit( name, shortName, "organisationUnitCode", new Date(),
 
128
            new Date(), true, "comment" );
 
129
 
 
130
        int id = organisationUnitService.addOrganisationUnit( organisationUnit );
 
131
 
 
132
        organisationUnit.setName( updatedName );
 
133
        organisationUnit.setShortName( updatedShortName );
 
134
 
 
135
        organisationUnitService.updateOrganisationUnit( organisationUnit );
 
136
 
 
137
        OrganisationUnit updatedOrganisationUnit = organisationUnitService.getOrganisationUnit( id );
 
138
 
 
139
        assertEquals( updatedOrganisationUnit.getName(), updatedName );
 
140
        assertEquals( updatedOrganisationUnit.getShortName(), updatedShortName );
 
141
    }
 
142
 
 
143
    public void testGetOrganisationUnitWithChildren()
 
144
        throws Exception
 
145
    {
 
146
        OrganisationUnit unit1 = new OrganisationUnit( "name1", "shortName1", "organisationUnitCode1", new Date(),
 
147
            new Date(), true, "comment" );
 
148
        OrganisationUnit unit2 = new OrganisationUnit( "name2", unit1, "shortName2", "organisationUnitCode2",
 
149
            new Date(), new Date(), true, "comment" );
 
150
        OrganisationUnit unit3 = new OrganisationUnit( "name3", unit2, "shortName3", "organisationUnitCode3",
 
151
            new Date(), new Date(), true, "comment" );
 
152
        OrganisationUnit unit4 = new OrganisationUnit( "name4", "shortName4", "organisationUnitCode4", new Date(),
 
153
            new Date(), true, "comment" );
 
154
 
 
155
        int id1 = organisationUnitService.addOrganisationUnit( unit1 );
 
156
        unit1.getChildren().add( unit2 );
 
157
        organisationUnitService.addOrganisationUnit( unit2 );
 
158
        unit2.getChildren().add( unit3 );
 
159
        organisationUnitService.addOrganisationUnit( unit3 );
 
160
        organisationUnitService.addOrganisationUnit( unit4 );
 
161
 
 
162
        assertTrue( organisationUnitService.getOrganisationUnitWithChildren( id1 ).size() == 3 );
 
163
    }
 
164
 
 
165
    public void testGetOrganisationUnitsByFields()
 
166
        throws Exception
 
167
    {
 
168
        String oU1Name = "OU1name";
 
169
        String oU2Name = "OU2name";
 
170
        String oU3Name = "OU3name";
 
171
        String oU1ShortName = "OU1ShortName";
 
172
        String oU2ShortName = "OU2ShortName";
 
173
        String oU3ShortName = "OU3ShortName";
 
174
        String oU1Code = "OU1Code";
 
175
        String oU2Code = "OU2Code";
 
176
        String oU3Code = "OU3Code";
 
177
 
 
178
        OrganisationUnit organisationUnit1 = new OrganisationUnit( oU1Name, null, oU1ShortName, oU1Code, null, null,
 
179
            true, null );
 
180
        OrganisationUnit organisationUnit2 = new OrganisationUnit( oU2Name, null, oU2ShortName, oU2Code, null, null,
 
181
            true, null );
 
182
        OrganisationUnit organisationUnit3 = new OrganisationUnit( oU3Name, null, oU3ShortName, oU3Code, null, null,
 
183
            false, null );
 
184
 
 
185
        organisationUnitService.addOrganisationUnit( organisationUnit1 );
 
186
        organisationUnitService.addOrganisationUnit( organisationUnit2 );
 
187
        organisationUnitService.addOrganisationUnit( organisationUnit3 );
 
188
 
 
189
        OrganisationUnit unit1 = organisationUnitService.getOrganisationUnitByName( oU1Name );
 
190
        assertEquals( unit1.getName(), oU1Name );
 
191
 
 
192
        OrganisationUnit unit2 = organisationUnitService.getOrganisationUnitByShortName( oU2ShortName );
 
193
        assertEquals( unit2.getShortName(), oU2ShortName );
 
194
 
 
195
        OrganisationUnit unit3 = organisationUnitService.getOrganisationUnitByCode( oU3Code );
 
196
        assertEquals( unit3.getCode(), oU3Code );
 
197
 
 
198
        OrganisationUnit unit4 = organisationUnitService.getOrganisationUnitByName( "foo" );
 
199
        assertNull( unit4 );
 
200
    }
 
201
 
 
202
    public void testGetOrganisationUnitByUUID()
 
203
        throws Exception
 
204
    {
 
205
        OrganisationUnit unit1 = new OrganisationUnit( "name1", "shortName1", "organisationUnitCode1", new Date(), new Date(), true, "comment" );        
 
206
        int id1 = organisationUnitService.addOrganisationUnit( unit1 );
 
207
        
 
208
        unit1 = organisationUnitService.getOrganisationUnit( id1 );        
 
209
        String uuid = unit1.getUuid();
 
210
        
 
211
        OrganisationUnit unit2 = organisationUnitService.getOrganisationUnit( uuid );
 
212
        
 
213
        assertEquals( unit1, unit2 );
 
214
    }
 
215
 
 
216
    public void testGetOrganisationUnitGraph()
 
217
        throws Exception
 
218
    {
 
219
        OrganisationUnit organisationUnit1 = new OrganisationUnit( "Foo", "shortName1", "organisationUnitCode1",
 
220
            new Date(), new Date(), true, "comment" );
 
221
        OrganisationUnit organisationUnit2 = new OrganisationUnit( "Bar", organisationUnit1, "shortName2",
 
222
            "organisationUnitCode2", new Date(), new Date(), true, "comment" );
 
223
        OrganisationUnit organisationUnit3 = new OrganisationUnit( "Foobar", organisationUnit2, "shortName3",
 
224
            "organisationUnitCode3", new Date(), new Date(), true, "comment" );
 
225
 
 
226
        int orgId1 = organisationUnitService.addOrganisationUnit( organisationUnit1 );
 
227
        int orgId2 = organisationUnitService.addOrganisationUnit( organisationUnit2 );
 
228
        int orgId3 = organisationUnitService.addOrganisationUnit( organisationUnit3 );
 
229
 
 
230
        List<OrganisationUnit> graph = organisationUnitService.getOrganisationUnitBranch( orgId3 );
 
231
        assertNotNull( graph );
 
232
        assertEquals( 3, graph.size() );
 
233
        OrganisationUnit orgUnit = graph.get( 0 );
 
234
        assertEquals( orgId1, orgUnit.getId() );
 
235
        orgUnit = graph.get( 1 );
 
236
        assertEquals( orgId2, orgUnit.getId() );
 
237
        orgUnit = graph.get( 2 );
 
238
        assertEquals( orgId3, orgUnit.getId() );
 
239
    }
 
240
    
 
241
    public void testGetAllOrganisationUnitsAndGetRootOrganisationUnit()
 
242
        throws Exception
 
243
    {
 
244
        // creating a tree with two roots ( id1 and id4 )
 
245
 
 
246
        OrganisationUnit unit1 = new OrganisationUnit( "OU1name", "OU1sname", "OU1code", null, null, true, null );
 
247
        OrganisationUnit unit2 = new OrganisationUnit( "OU2name", unit1, "OU2sname", "OU2code", null, null, true, null );
 
248
        OrganisationUnit unit3 = new OrganisationUnit( "OU3name", unit1, "OU3sname", "OU3code", null, null, true, null );
 
249
        OrganisationUnit unit4 = new OrganisationUnit( "OU4name", "OU4sname", "OU4code", null, null, true, null );
 
250
        OrganisationUnit unit5 = new OrganisationUnit( "OU5name", unit4, "OU5sname", "OU5code", null, null, true, null );
 
251
 
 
252
        int id1 = organisationUnitService.addOrganisationUnit( unit1 );
 
253
        int id2 = organisationUnitService.addOrganisationUnit( unit2 );
 
254
        int id3 = organisationUnitService.addOrganisationUnit( unit3 );
 
255
        int id4 = organisationUnitService.addOrganisationUnit( unit4 );
 
256
        int id5 = organisationUnitService.addOrganisationUnit( unit5 );
 
257
 
 
258
        // retrieving the fresh-made organisationUnits
 
259
        Iterator<OrganisationUnit> iterator1 = organisationUnitService.getAllOrganisationUnits().iterator();
 
260
 
 
261
        // assert the list contains the same organisationUnits as the ones added
 
262
        OrganisationUnit organisationUnit1 = iterator1.next();
 
263
        assertTrue( organisationUnit1.getId() == id1 );
 
264
 
 
265
        OrganisationUnit organisationUnit2 = iterator1.next();
 
266
        assertTrue( organisationUnit2.getId() == id2 );
 
267
 
 
268
        OrganisationUnit organisationUnit3 = iterator1.next();
 
269
        assertTrue( organisationUnit3.getId() == id3 );
 
270
 
 
271
        OrganisationUnit organisationUnit4 = iterator1.next();
 
272
        assertTrue( organisationUnit4.getId() == id4 );
 
273
 
 
274
        OrganisationUnit organisationUnit5 = iterator1.next();
 
275
        assertTrue( organisationUnit5.getId() == id5 );
 
276
 
 
277
        // retrieving the root organisationUnits
 
278
        Iterator<OrganisationUnit> iterator2 = organisationUnitService.getRootOrganisationUnits().iterator();
 
279
 
 
280
        OrganisationUnit rootOrganisationUnit1 = iterator2.next();
 
281
        OrganisationUnit rootOrganisationUnit2 = iterator2.next();
 
282
 
 
283
        // assert root organisationUnits not null and id equals id1 and id4
 
284
        assertNotNull( rootOrganisationUnit1 );
 
285
        assertNotNull( rootOrganisationUnit2 );
 
286
 
 
287
        assertTrue( rootOrganisationUnit1.getId() == id1 );
 
288
        assertTrue( rootOrganisationUnit2.getId() == id4 );
 
289
    }
 
290
    
 
291
    public void testGetOrganisationUnitsAtLevel()
 
292
        throws Exception
 
293
    {
 
294
        OrganisationUnit unit1 = new OrganisationUnit( "orgUnitName1", "shortName1", "organisationUnitCode1",
 
295
            new Date(), new Date(), true, "comment" );
 
296
        organisationUnitService.addOrganisationUnit( unit1 );
 
297
 
 
298
        OrganisationUnit unit2 = new OrganisationUnit( "orgUnitName2", unit1, "shortName2", "organisationUnitCode2",
 
299
            new Date(), new Date(), true, "comment" );
 
300
        unit1.getChildren().add( unit2 );
 
301
        organisationUnitService.addOrganisationUnit( unit2 );
 
302
 
 
303
        OrganisationUnit unit3 = new OrganisationUnit( "orgUnitName3", unit2, "shortName3", "organisationUnitCode3",
 
304
            new Date(), new Date(), true, "comment" );
 
305
        unit2.getChildren().add( unit3 );
 
306
        organisationUnitService.addOrganisationUnit( unit3 );
 
307
 
 
308
        OrganisationUnit unit4 = new OrganisationUnit( "orgUnitName4", unit2, "shortName4", "organisationUnitCode4",
 
309
            new Date(), new Date(), true, "comment" );
 
310
        unit2.getChildren().add( unit4 );
 
311
        organisationUnitService.addOrganisationUnit( unit4 );
 
312
 
 
313
        OrganisationUnit unit5 = new OrganisationUnit( "orgUnitName5", unit2, "shortName5", "organisationUnitCode5",
 
314
            new Date(), new Date(), true, "comment" );
 
315
        unit2.getChildren().add( unit5 );
 
316
        organisationUnitService.addOrganisationUnit( unit5 );
 
317
 
 
318
        OrganisationUnit unit6 = new OrganisationUnit( "orgUnitName6", unit3, "shortName6", "organisationUnitCode6",
 
319
            new Date(), new Date(), true, "comment" );
 
320
        unit3.getChildren().add( unit6 );
 
321
        organisationUnitService.addOrganisationUnit( unit6 );
 
322
 
 
323
        OrganisationUnit unit7 = new OrganisationUnit( "orgUnitName7", "shortName7", "organisationUnitCode7",
 
324
            new Date(), new Date(), true, "comment" );
 
325
        organisationUnitService.addOrganisationUnit( unit7 );
 
326
 
 
327
        assertTrue( organisationUnitService.getOrganisationUnitsAtLevel( 1 ).size() == 2 );
 
328
        assertTrue( organisationUnitService.getOrganisationUnitsAtLevel( 3 ).size() == 3 );
 
329
        assertTrue( organisationUnitService.getNumberOfOrganisationalLevels() == 4 );
 
330
        assertTrue( organisationUnitService.getLevelOfOrganisationUnit( unit4 ) == 3 );
 
331
        assertTrue( organisationUnitService.getLevelOfOrganisationUnit( unit1 ) == 1 );
 
332
        assertTrue( organisationUnitService.getLevelOfOrganisationUnit( unit6 ) == 4 );
 
333
    }
 
334
    
 
335
    public void testGetOrganisationUnitAtLevelAndBranch()
 
336
        throws Exception
 
337
    {
 
338
        OrganisationUnit unitA = createOrganisationUnit( 'A' );
 
339
        OrganisationUnit unitB = createOrganisationUnit( 'B', unitA );
 
340
        OrganisationUnit unitC = createOrganisationUnit( 'C', unitA );
 
341
        OrganisationUnit unitD = createOrganisationUnit( 'D', unitB );
 
342
        OrganisationUnit unitE = createOrganisationUnit( 'E', unitB );
 
343
        OrganisationUnit unitF = createOrganisationUnit( 'F', unitC );
 
344
        OrganisationUnit unitG = createOrganisationUnit( 'G', unitC );
 
345
        OrganisationUnit unitH = createOrganisationUnit( 'H', unitD );
 
346
        OrganisationUnit unitI = createOrganisationUnit( 'I', unitD );
 
347
        OrganisationUnit unitJ = createOrganisationUnit( 'J', unitE );
 
348
        OrganisationUnit unitK = createOrganisationUnit( 'K', unitE );
 
349
        OrganisationUnit unitL = createOrganisationUnit( 'L', unitF );
 
350
        OrganisationUnit unitM = createOrganisationUnit( 'M', unitF );
 
351
        OrganisationUnit unitN = createOrganisationUnit( 'N', unitG );
 
352
        OrganisationUnit unitO = createOrganisationUnit( 'O', unitG );
 
353
        
 
354
        unitA.getChildren().add( unitB );
 
355
        unitA.getChildren().add( unitC );
 
356
        unitB.getChildren().add( unitD );
 
357
        unitB.getChildren().add( unitE );
 
358
        unitC.getChildren().add( unitF );
 
359
        unitC.getChildren().add( unitG );
 
360
        unitD.getChildren().add( unitH );
 
361
        unitD.getChildren().add( unitI );
 
362
        unitE.getChildren().add( unitJ );
 
363
        unitE.getChildren().add( unitK );
 
364
        unitF.getChildren().add( unitL );
 
365
        unitF.getChildren().add( unitM );
 
366
        unitG.getChildren().add( unitN );
 
367
        unitG.getChildren().add( unitO );
 
368
        
 
369
        organisationUnitService.addOrganisationUnit( unitA );
 
370
        organisationUnitService.addOrganisationUnit( unitB );
 
371
        organisationUnitService.addOrganisationUnit( unitC );
 
372
        organisationUnitService.addOrganisationUnit( unitD );
 
373
        organisationUnitService.addOrganisationUnit( unitE );
 
374
        organisationUnitService.addOrganisationUnit( unitF );
 
375
        organisationUnitService.addOrganisationUnit( unitG );
 
376
        organisationUnitService.addOrganisationUnit( unitH );
 
377
        organisationUnitService.addOrganisationUnit( unitI );
 
378
        organisationUnitService.addOrganisationUnit( unitJ );
 
379
        organisationUnitService.addOrganisationUnit( unitK );
 
380
        organisationUnitService.addOrganisationUnit( unitL );
 
381
        organisationUnitService.addOrganisationUnit( unitM );
 
382
        organisationUnitService.addOrganisationUnit( unitN );
 
383
        organisationUnitService.addOrganisationUnit( unitO );
 
384
        
 
385
        assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 2, unitB ), unitB ) );
 
386
        assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 3, unitB ), unitD, unitE ) );
 
387
        assertTrue( equals( organisationUnitService.getOrganisationUnitsAtLevel( 4, unitB ), unitH, unitI, unitJ, unitK ) );
 
388
    }
 
389
    
 
390
    // -------------------------------------------------------------------------
 
391
    // OrganisationUnitGroup
 
392
    // -------------------------------------------------------------------------
 
393
 
 
394
    public void testAddAndDelOrganisationUnitGroup()
 
395
        throws Exception
 
396
    {
 
397
        OrganisationUnitGroup organisationUnitGroup1 = new OrganisationUnitGroup( "OUGname" );
 
398
 
 
399
        int id1 = organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup1 );
 
400
 
 
401
        // assert getOrganisationUnitGroup
 
402
        assertNotNull( organisationUnitGroupService.getOrganisationUnitGroup( id1 ) );
 
403
 
 
404
        assertEquals( organisationUnitGroupService.getOrganisationUnitGroup( id1 ).getName(), "OUGname" );
 
405
 
 
406
        // assert unique constraint
 
407
        OrganisationUnitGroup organisationUnitGroup2 = new OrganisationUnitGroup( "OUGname" );
 
408
 
 
409
        try
 
410
        {
 
411
            organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup2 );
 
412
            fail( "Expected exception" );
 
413
        }
 
414
        catch ( Exception ex )
 
415
        {
 
416
            // expected
 
417
        }
 
418
 
 
419
        organisationUnitGroupService.deleteOrganisationUnitGroup( organisationUnitGroupService
 
420
            .getOrganisationUnitGroup( id1 ) );
 
421
 
 
422
        // assert delOrganisationUnitGroup
 
423
        assertNull( organisationUnitGroupService.getOrganisationUnitGroup( id1 ) );
 
424
    }
 
425
 
 
426
    public void testUpdateOrganisationUnitGroup()
 
427
        throws Exception
 
428
    {
 
429
        OrganisationUnitGroup organisationUnitGroup = new OrganisationUnitGroup( "OUGname" );
 
430
 
 
431
        OrganisationUnit organisationUnit1 = new OrganisationUnit( "OU1name", null, "OU1sname", "OU1code", null, null,
 
432
            true, null );
 
433
        OrganisationUnit organisationUnit2 = new OrganisationUnit( "OU2name", null, "OU2sname", "OU2code", null, null,
 
434
            true, null );
 
435
 
 
436
        organisationUnitGroup.getMembers().add( organisationUnit1 );
 
437
        organisationUnitGroup.getMembers().add( organisationUnit2 );
 
438
 
 
439
        organisationUnitService.addOrganisationUnit( organisationUnit1 );
 
440
        organisationUnitService.addOrganisationUnit( organisationUnit2 );
 
441
 
 
442
        int ougid = organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup );
 
443
 
 
444
        assertTrue( organisationUnitGroupService.getOrganisationUnitGroup( ougid ).getMembers().size() == 2 );
 
445
        
 
446
        organisationUnitGroup.getMembers().remove( organisationUnit1 );
 
447
 
 
448
        organisationUnitGroupService.updateOrganisationUnitGroup( organisationUnitGroup );
 
449
 
 
450
        assertTrue( organisationUnitGroupService.getOrganisationUnitGroup( ougid ).getMembers().size() == 1 );
 
451
    }
 
452
 
 
453
    public void testGetAllOrganisationUnitGroups()
 
454
        throws Exception
 
455
    {
 
456
        OrganisationUnitGroup group1 = new OrganisationUnitGroup( "organisationUnitGroupName1" );
 
457
        int gid1 = organisationUnitGroupService.addOrganisationUnitGroup( group1 );
 
458
 
 
459
        OrganisationUnitGroup group2 = new OrganisationUnitGroup( "organisationUnitGroupName2" );
 
460
        int gid2 = organisationUnitGroupService.addOrganisationUnitGroup( group2 );
 
461
 
 
462
        OrganisationUnitGroup group3 = new OrganisationUnitGroup( "organisationUnitGroupName3" );
 
463
        int gid3 = organisationUnitGroupService.addOrganisationUnitGroup( group3 );
 
464
 
 
465
        OrganisationUnitGroup group4 = new OrganisationUnitGroup( "organisationUnitGroupName4" );
 
466
        int gid4 = organisationUnitGroupService.addOrganisationUnitGroup( group4 );
 
467
 
 
468
        Iterator<OrganisationUnitGroup> iterator = organisationUnitGroupService.getAllOrganisationUnitGroups().iterator();
 
469
 
 
470
        OrganisationUnitGroup organisationUnitGroup1 = iterator.next();
 
471
        assertTrue( organisationUnitGroup1.getId() == gid1 );
 
472
 
 
473
        OrganisationUnitGroup organisationUnitGroup2 = iterator.next();
 
474
        assertTrue( organisationUnitGroup2.getId() == gid2 );
 
475
 
 
476
        OrganisationUnitGroup organisationUnitGroup3 = iterator.next();
 
477
        assertTrue( organisationUnitGroup3.getId() == gid3 );
 
478
 
 
479
        OrganisationUnitGroup organisationUnitGroup4 = iterator.next();
 
480
        assertTrue( organisationUnitGroup4.getId() == gid4 );
 
481
    }
 
482
 
 
483
    public void testGetOrganisationUnitGroupByName()
 
484
        throws Exception
 
485
    {
 
486
        String oUG1Name = "OUG1Name";
 
487
        String oUG2Name = "OUG2Name";
 
488
 
 
489
        OrganisationUnitGroup organisationUnitGroup1 = new OrganisationUnitGroup( oUG1Name );
 
490
        OrganisationUnitGroup organisationUnitGroup2 = new OrganisationUnitGroup( oUG2Name );
 
491
 
 
492
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup1 );
 
493
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup2 );
 
494
 
 
495
        OrganisationUnitGroup group1 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG1Name );
 
496
        assertEquals( group1.getName(), oUG1Name );
 
497
 
 
498
        OrganisationUnitGroup group2 = organisationUnitGroupService.getOrganisationUnitGroupByName( oUG2Name );
 
499
        assertEquals( group2.getName(), oUG2Name );
 
500
    }
 
501
 
 
502
    public void testGetOrganisationUnitGroupByUUID()
 
503
        throws Exception
 
504
    {
 
505
        OrganisationUnitGroup group1 = new OrganisationUnitGroup( "name1" );        
 
506
        int id1 = organisationUnitGroupService.addOrganisationUnitGroup( group1 );
 
507
        
 
508
        group1 = organisationUnitGroupService.getOrganisationUnitGroup( id1 );        
 
509
        String uuid = group1.getUuid();
 
510
        
 
511
        OrganisationUnitGroup group2 = organisationUnitGroupService.getOrganisationUnitGroup( uuid );
 
512
        
 
513
        assertEquals( group1, group2 );
 
514
    }
 
515
 
 
516
    // -------------------------------------------------------------------------
 
517
    // OrganisationUnitHierarchy
 
518
    // -------------------------------------------------------------------------
 
519
 
 
520
    public void testAddGetOrganisationUnitHierarchy()
 
521
        throws Exception
 
522
    {
 
523
        // creates a tree
 
524
        OrganisationUnit unit1 = new OrganisationUnit( "orgUnitName1", "shortName1", "organisationUnitCode1",
 
525
            new Date(), new Date(), true, "comment" );
 
526
        OrganisationUnit unit2 = new OrganisationUnit( "orgUnitName2", unit1, "shortName2", "organisationUnitCode2",
 
527
            new Date(), new Date(), true, "comment" );
 
528
        OrganisationUnit unit3 = new OrganisationUnit( "orgUnitName3", unit1, "shortName3", "organisationUnitCode3",
 
529
            new Date(), new Date(), true, "comment" );
 
530
        OrganisationUnit unit4 = new OrganisationUnit( "orgUnitName4", unit2, "shortName4", "organisationUnitCode4",
 
531
            new Date(), new Date(), true, "comment" );
 
532
        OrganisationUnit unit5 = new OrganisationUnit( "orgUnitName5", unit2, "shortName5", "organisationUnitCode5",
 
533
            new Date(), new Date(), true, "comment" );
 
534
        OrganisationUnit unit6 = new OrganisationUnit( "orgUnitName6", unit5, "shortName6", "organisationUnitCode6",
 
535
            new Date(), new Date(), true, "comment" );
 
536
 
 
537
        organisationUnitService.addOrganisationUnit( unit1 );
 
538
        int id2 = organisationUnitService.addOrganisationUnit( unit2 );
 
539
        organisationUnitService.addOrganisationUnit( unit3 );
 
540
        int id4 = organisationUnitService.addOrganisationUnit( unit4 );
 
541
        int id5 = organisationUnitService.addOrganisationUnit( unit5 );
 
542
        int id6 = organisationUnitService.addOrganisationUnit( unit6 );
 
543
 
 
544
        Calendar calendar = Calendar.getInstance();
 
545
        calendar.set( 2005, Calendar.JULY, 1 );
 
546
        Date date1 = calendar.getTime();
 
547
        calendar.set( 2005, Calendar.AUGUST, 1 );
 
548
        Date date2 = calendar.getTime();
 
549
        calendar.set( 2005, Calendar.SEPTEMBER, 1 );
 
550
        Date date3 = calendar.getTime();
 
551
 
 
552
        // creates a hierarchy-version
 
553
        organisationUnitService.addOrganisationUnitHierarchy( date2 );
 
554
 
 
555
        // asserts hierarchy-version is created and returns id
 
556
        Collection<OrganisationUnitHierarchy> hierarchies = organisationUnitService.getOrganisationUnitHierarchies(
 
557
            date1, date3 );
 
558
 
 
559
        Iterator<OrganisationUnitHierarchy> iterator = hierarchies.iterator();
 
560
 
 
561
        OrganisationUnitHierarchy hierarchy = iterator.next();
 
562
 
 
563
        // retrieves children from hierarchyVersion ver_id and parentId id2
 
564
        Collection<Integer> children1 = organisationUnitService.getChildren( hierarchy, unit2.getId() );
 
565
        Iterator<Integer> iterator1 = children1.iterator();
 
566
 
 
567
        // asserts 4, 5, 6 are children of 2
 
568
        assertTrue( iterator1.next().intValue() == id2 );
 
569
        assertTrue( iterator1.next().intValue() == id4 );
 
570
        assertTrue( iterator1.next().intValue() == id5 );
 
571
        assertTrue( iterator1.next().intValue() == id6 );
 
572
        assertTrue( iterator1.hasNext() == false );
 
573
 
 
574
        // retrieves children from hierarchyVersion ver_id and parentId id1
 
575
        Collection<Integer> children2 = organisationUnitService.getChildren( hierarchy, unit1.getId() );
 
576
 
 
577
        // assert the number of children
 
578
        assertTrue( children2.size() == 6 );
 
579
 
 
580
        // retrieves children from hierarchyVersion ver_id and parentId id5
 
581
        Collection<Integer> children3 = organisationUnitService.getChildren( hierarchy, unit5.getId() );
 
582
        Iterator<Integer> iterator3 = children3.iterator();
 
583
 
 
584
        // assert 6 is children of 5 and the number of children
 
585
        assertTrue( iterator3.next().intValue() == id5 );
 
586
        assertTrue( iterator3.next().intValue() == id6 );
 
587
        assertTrue( children3.size() == 2 );
 
588
    }
 
589
    
 
590
    public void testGetLatestOrganisationUnitHierarchy()
 
591
    {
 
592
        Calendar cal = Calendar.getInstance();
 
593
        
 
594
        cal.set( 1990, Calendar.JANUARY, 1 );
 
595
        
 
596
        organisationUnitService.addOrganisationUnitHierarchy( cal.getTime() );
 
597
        
 
598
        cal.set( 1995, Calendar.JANUARY, 1 );
 
599
        
 
600
        int idB = organisationUnitService.addOrganisationUnitHierarchy( cal.getTime() );
 
601
        
 
602
        cal.set( 1985, Calendar.JANUARY, 1 );
 
603
        
 
604
        organisationUnitService.addOrganisationUnitHierarchy( cal.getTime() );
 
605
        
 
606
        OrganisationUnitHierarchy hierarchy = organisationUnitService.getLatestOrganisationUnitHierarchy();
 
607
        
 
608
        assertEquals( hierarchy.getId(), idB );
 
609
    }
 
610
 
 
611
    public void testAddOrganisationUnitHierarchiesOnSameDate()
 
612
        throws Exception
 
613
    {
 
614
        OrganisationUnit unit1 = new OrganisationUnit( "orgUnitName1", "shortName1", "organisationUnitCode1",
 
615
            new Date(), new Date(), true, "comment" );
 
616
        OrganisationUnit unit2 = new OrganisationUnit( "orgUnitName2", unit1, "shortName2", "organisationUnitCode2",
 
617
            new Date(), new Date(), true, "comment" );
 
618
        organisationUnitService.addOrganisationUnit( unit1 );
 
619
        organisationUnitService.addOrganisationUnit( unit2 );
 
620
 
 
621
        GregorianCalendar calendar = new GregorianCalendar();
 
622
        calendar.set( 2005, Calendar.JULY, 1 );
 
623
        Date startDate = calendar.getTime();
 
624
        calendar.set( 2005, Calendar.SEPTEMBER, 1 );
 
625
        Date endDate = calendar.getTime();
 
626
        calendar.set( 2005, Calendar.AUGUST, 1 );
 
627
        Date date = calendar.getTime();
 
628
 
 
629
        int id1 = organisationUnitService.addOrganisationUnitHierarchy( date );
 
630
 
 
631
        Collection<OrganisationUnitHierarchy> c1 = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate );
 
632
        Iterator<OrganisationUnitHierarchy> i1 = c1.iterator();
 
633
        OrganisationUnitHierarchy h1 = i1.next();
 
634
 
 
635
        assertTrue( c1.size() == 1 );
 
636
        assertTrue( h1.getId() == id1 );
 
637
 
 
638
        OrganisationUnit unit3 = new OrganisationUnit( "orgUnitName3", "shortName3", "organisationUnitCode3",
 
639
            new Date(), new Date(), true, "comment" );
 
640
        organisationUnitService.addOrganisationUnit( unit3 );
 
641
 
 
642
        organisationUnitService.addOrganisationUnitHierarchy( date );
 
643
 
 
644
        OrganisationUnit unit4 = new OrganisationUnit( "orgUnitName4", "shortName4", "organisationUnitCode4",
 
645
            new Date(), new Date(), true, "comment" );
 
646
        organisationUnitService.addOrganisationUnit( unit4 );
 
647
 
 
648
        int id3 = organisationUnitService.addOrganisationUnitHierarchy( date );
 
649
 
 
650
        Collection<OrganisationUnitHierarchy> c2 = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate );
 
651
        Iterator<OrganisationUnitHierarchy> i2 = c2.iterator();
 
652
        OrganisationUnitHierarchy h2 = i2.next();
 
653
 
 
654
        assertTrue( c2.size() == 1 );
 
655
        assertTrue( h2.getId() == id3 );
 
656
 
 
657
    }
 
658
 
 
659
    public void testGetOrganisationUnitHierarchies()
 
660
        throws Exception
 
661
    {
 
662
        // creates a tree
 
663
        OrganisationUnit unit1 = new OrganisationUnit( "orgUnitName1", "shortName1", "organisationUnitCode1",
 
664
            new Date(), new Date(), true, "comment" );
 
665
        OrganisationUnit unit2 = new OrganisationUnit( "orgUnitName2", unit1, "shortName2", "organisationUnitCode2",
 
666
            new Date(), new Date(), true, "comment" );
 
667
        organisationUnitService.addOrganisationUnit( unit1 );
 
668
        organisationUnitService.addOrganisationUnit( unit2 );
 
669
 
 
670
        // creates a start and end-date for a period
 
671
        GregorianCalendar calendar = new GregorianCalendar();
 
672
        calendar.set( 2005, Calendar.JULY, 1 );
 
673
        Date startDate = calendar.getTime();
 
674
        calendar.set( 2005, Calendar.SEPTEMBER, 1 );
 
675
        Date endDate = calendar.getTime();
 
676
 
 
677
        // creates a HierarchyVersion
 
678
        calendar.set( 2005, Calendar.MAY, 15 );
 
679
        organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
680
 
 
681
        // creates a HierarchyVersion
 
682
        calendar.set( 2005, Calendar.JUNE, 15 );
 
683
        Date jun15 = calendar.getTime();
 
684
        int ver_id2 = organisationUnitService.addOrganisationUnitHierarchy( jun15 );
 
685
 
 
686
        // asserts getOrganisationUnitHierarchies
 
687
        Iterator<OrganisationUnitHierarchy> iterator1 = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate ).iterator();
 
688
        OrganisationUnitHierarchy hierVerA1 = iterator1.next();
 
689
        assertTrue( hierVerA1.getId() == ver_id2 );
 
690
        assertTrue( iterator1.hasNext() == false );
 
691
 
 
692
        // creates a HierarchyVersiony
 
693
        calendar.set( 2005, Calendar.JULY, 15 );
 
694
        Date jul15 = calendar.getTime();
 
695
        int ver_id3 = organisationUnitService.addOrganisationUnitHierarchy( jul15 );
 
696
 
 
697
        // asserts getOrganisationUnitHierarchies
 
698
        Iterator<OrganisationUnitHierarchy> iterator2 = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate ).iterator();
 
699
        OrganisationUnitHierarchy hierVerB1 = iterator2.next();
 
700
        OrganisationUnitHierarchy hierVerB2 = iterator2.next();
 
701
        assertTrue( hierVerB1.getId() == ver_id2 );
 
702
        assertTrue( hierVerB2.getId() == ver_id3 );
 
703
        assertTrue( iterator2.hasNext() == false );
 
704
 
 
705
        // creates a HierarchyVersion
 
706
        calendar.set( 2005, Calendar.AUGUST, 15 );
 
707
        int ver_id4 = organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
708
 
 
709
        // creates a HierarchyVersion
 
710
        calendar.set( 2005, Calendar.SEPTEMBER, 15 );
 
711
        organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
712
 
 
713
        // asserts right number of HierarchyVersions are retrieved
 
714
        assertTrue( organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate ).size() == 3 );
 
715
 
 
716
        // asserts getOrganisationUnitHierarchies
 
717
        Iterator<OrganisationUnitHierarchy> iterator3 = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate ).iterator();
 
718
        OrganisationUnitHierarchy hierVerC1 = iterator3.next();
 
719
        OrganisationUnitHierarchy hierVerC2 = iterator3.next();
 
720
        OrganisationUnitHierarchy hierVerC3 = iterator3.next();
 
721
        assertTrue( hierVerC1.getId() == ver_id2 );
 
722
        assertTrue( hierVerC2.getId() == ver_id3 );
 
723
        assertTrue( hierVerC3.getId() == ver_id4 );
 
724
        assertTrue( iterator3.hasNext() == false );
 
725
        
 
726
        // asserts getOrganisationUnitHierarchy 
 
727
        OrganisationUnitHierarchy hierarchy2 = organisationUnitService.getOrganisationUnitHierarchy( ver_id2 );
 
728
        assertTrue( hierarchy2.getDate().equals( jun15 ) );
 
729
        
 
730
        OrganisationUnitHierarchy hierarchy3 = organisationUnitService.getOrganisationUnitHierarchy( ver_id3 );
 
731
        assertTrue( hierarchy3.getDate().equals( jul15 ) );
 
732
    }
 
733
 
 
734
    public void testClearOrganisationUnitHierarchyHistory()
 
735
        throws Exception
 
736
    {
 
737
        OrganisationUnit unit1 = new OrganisationUnit( "orgUnitName1", "shortName1", "organisationUnitCode1",
 
738
            new Date(), new Date(), true, "comment" );
 
739
        OrganisationUnit unit2 = new OrganisationUnit( "orgUnitName2", unit1, "shortName2", "organisationUnitCode2",
 
740
            new Date(), new Date(), true, "comment" );
 
741
        
 
742
        organisationUnitService.addOrganisationUnit( unit1 );
 
743
        organisationUnitService.addOrganisationUnit( unit2 );
 
744
 
 
745
        Calendar calendar = Calendar.getInstance();
 
746
 
 
747
        calendar.clear();
 
748
        calendar.set( 2005, Calendar.JULY, 1 );
 
749
        organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
750
 
 
751
        calendar.clear();
 
752
        calendar.set( 2005, Calendar.SEPTEMBER, 1 );
 
753
        organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
754
 
 
755
        calendar.clear();
 
756
        calendar.set( 2005, Calendar.AUGUST, 1 );
 
757
        organisationUnitService.addOrganisationUnitHierarchy( calendar.getTime() );
 
758
 
 
759
        calendar.set( 2005, Calendar.JUNE, 1 );
 
760
        Date startDate = calendar.getTime();
 
761
 
 
762
        calendar.set( 2005, Calendar.OCTOBER, 1 );
 
763
        Date endDate = calendar.getTime();
 
764
 
 
765
        Collection<OrganisationUnitHierarchy> hierarchies = organisationUnitService.getOrganisationUnitHierarchies(
 
766
            startDate, endDate );
 
767
 
 
768
        assertTrue( hierarchies.size() == 3 );
 
769
 
 
770
        organisationUnitService.clearOrganisationUnitHierarchyHistory();
 
771
 
 
772
        Collection<OrganisationUnitHierarchy> clearedHierarchies = organisationUnitService.getOrganisationUnitHierarchies( startDate, endDate );
 
773
 
 
774
        Iterator<OrganisationUnitHierarchy> iterator = clearedHierarchies.iterator();
 
775
        
 
776
        calendar.set( 1970, Calendar.JANUARY, 1 );
 
777
        Date epoch = calendar.getTime();
 
778
        
 
779
        OrganisationUnitHierarchy clearedHierarchy = iterator.next();
 
780
        
 
781
        assertTrue( clearedHierarchies.size() == 1 );
 
782
        assertTrue( clearedHierarchy.getDate().equals( epoch ) );
 
783
    }
 
784
 
 
785
    // -------------------------------------------------------------------------
 
786
    // OrganisationUnitGroupSets
 
787
    // -------------------------------------------------------------------------
 
788
 
 
789
    public void testOrganisationUnitGroupSetsBasic()
 
790
        throws Exception
 
791
    {
 
792
        OrganisationUnitGroup organisationUnitGroup1 = new OrganisationUnitGroup();
 
793
        organisationUnitGroup1.setName( "oug1" );
 
794
        OrganisationUnitGroup organisationUnitGroup2 = new OrganisationUnitGroup();
 
795
        organisationUnitGroup2.setName( "oug2" );
 
796
        OrganisationUnitGroup organisationUnitGroup3 = new OrganisationUnitGroup();
 
797
        organisationUnitGroup3.setName( "oug3" );
 
798
        OrganisationUnitGroup organisationUnitGroup4 = new OrganisationUnitGroup();
 
799
        organisationUnitGroup4.setName( "oug4" );
 
800
 
 
801
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup1 );
 
802
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup2 );
 
803
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup3 );
 
804
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup4 );
 
805
 
 
806
        OrganisationUnitGroupSet organisationUnitGroupSet1 = new OrganisationUnitGroupSet();
 
807
        organisationUnitGroupSet1.setName( "ougs1" );
 
808
        organisationUnitGroupSet1.setCompulsory( true );
 
809
        organisationUnitGroupSet1.setExclusive( false );
 
810
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup1 );
 
811
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup2 );
 
812
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup3 );
 
813
 
 
814
        int id1 = organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet1 );
 
815
 
 
816
        // assert add
 
817
        assertNotNull( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ) );
 
818
 
 
819
        assertEquals( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getName(), "ougs1" );
 
820
 
 
821
        assertTrue( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getOrganisationUnitGroups().size() == 3 );
 
822
        
 
823
        organisationUnitGroupSet1.getOrganisationUnitGroups().remove( organisationUnitGroup3 );
 
824
 
 
825
        organisationUnitGroupService.updateOrganisationUnitGroupSet( organisationUnitGroupSet1 );
 
826
 
 
827
        // assert update
 
828
        assertTrue( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ).getOrganisationUnitGroups().size() == 2 );
 
829
        
 
830
        OrganisationUnitGroupSet organisationUnitGroupSet2 = new OrganisationUnitGroupSet();
 
831
        organisationUnitGroupSet2.setName( "ougs2" );
 
832
        organisationUnitGroupSet2.setCompulsory( true );
 
833
        organisationUnitGroupSet2.setExclusive( false );
 
834
        organisationUnitGroupSet2.getOrganisationUnitGroups().add( organisationUnitGroup4 );
 
835
 
 
836
        int id2 = organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet2 );
 
837
 
 
838
        // assert getAll
 
839
        assertTrue( organisationUnitGroupService.getAllOrganisationUnitGroupSets().size() == 2 );
 
840
        
 
841
        organisationUnitGroupService.deleteOrganisationUnitGroupSet( organisationUnitGroupSet1 );
 
842
        organisationUnitGroupService.deleteOrganisationUnitGroupSet( organisationUnitGroupSet2 );
 
843
        
 
844
        assertNull( organisationUnitGroupService.getOrganisationUnitGroupSet( id1 ) );
 
845
        assertNull( organisationUnitGroupService.getOrganisationUnitGroupSet( id2 ) );
 
846
    }
 
847
 
 
848
    public void testGetOrganisationUnitGroupSetsByName()
 
849
        throws Exception
 
850
    {
 
851
        OrganisationUnitGroup organisationUnitGroup1 = new OrganisationUnitGroup();
 
852
        organisationUnitGroup1.setName( "oug1" );
 
853
        OrganisationUnitGroup organisationUnitGroup2 = new OrganisationUnitGroup();
 
854
        organisationUnitGroup2.setName( "oug2" );
 
855
        OrganisationUnitGroup organisationUnitGroup3 = new OrganisationUnitGroup();
 
856
        organisationUnitGroup3.setName( "oug3" );
 
857
        OrganisationUnitGroup organisationUnitGroup4 = new OrganisationUnitGroup();
 
858
        organisationUnitGroup4.setName( "oug4" );
 
859
 
 
860
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup1 );
 
861
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup2 );
 
862
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup3 );
 
863
        organisationUnitGroupService.addOrganisationUnitGroup( organisationUnitGroup4 );
 
864
 
 
865
        String ougs1 = "ougs1";
 
866
        String ougs2 = "ougs2";
 
867
 
 
868
        OrganisationUnitGroupSet organisationUnitGroupSet1 = new OrganisationUnitGroupSet();
 
869
        organisationUnitGroupSet1.setName( ougs1 );
 
870
        organisationUnitGroupSet1.setCompulsory( true );
 
871
        organisationUnitGroupSet1.setExclusive( true );
 
872
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup1 );
 
873
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup2 );
 
874
        organisationUnitGroupSet1.getOrganisationUnitGroups().add( organisationUnitGroup3 );
 
875
 
 
876
        OrganisationUnitGroupSet organisationUnitGroupSet2 = new OrganisationUnitGroupSet();
 
877
        organisationUnitGroupSet2.setName( ougs2 );
 
878
        organisationUnitGroupSet2.setCompulsory( false );
 
879
        organisationUnitGroupSet2.setExclusive( false );
 
880
        organisationUnitGroupSet2.getOrganisationUnitGroups().add( organisationUnitGroup4 );
 
881
 
 
882
        organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet1 );
 
883
        organisationUnitGroupService.addOrganisationUnitGroupSet( organisationUnitGroupSet2 );
 
884
 
 
885
        OrganisationUnitGroupSet set1 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs1 );
 
886
        OrganisationUnitGroupSet set2 = organisationUnitGroupService.getOrganisationUnitGroupSetByName( ougs2 );
 
887
 
 
888
        assertEquals( set1.getName(), ougs1 );
 
889
        assertEquals( set2.getName(), ougs2 );
 
890
 
 
891
        Collection<OrganisationUnitGroupSet> compulsorySets = organisationUnitGroupService
 
892
            .getCompulsoryOrganisationUnitGroupSets();
 
893
        assertEquals( compulsorySets.size(), 1 );
 
894
 
 
895
        Collection<OrganisationUnitGroupSet> exclusiveSets = organisationUnitGroupService
 
896
            .getExclusiveOrganisationUnitGroupSets();
 
897
        assertEquals( exclusiveSets.size(), 1 );
 
898
 
 
899
        Collection<OrganisationUnitGroupSet> containingSets = organisationUnitGroupService
 
900
            .getExclusiveOrganisationUnitGroupSetsContainingGroup( organisationUnitGroup1 );
 
901
        assertEquals( containingSets.size(), 1 );
 
902
    }
 
903
 
 
904
    // -------------------------------------------------------------------------
 
905
    // OrganisationUnitLevel
 
906
    // -------------------------------------------------------------------------
 
907
 
 
908
    public void testAddGetOrganisationUnitLevel()
 
909
    {
 
910
        OrganisationUnitLevel levelA = new OrganisationUnitLevel( 1, "National" );
 
911
        OrganisationUnitLevel levelB = new OrganisationUnitLevel( 2, "District" );
 
912
        
 
913
        int idA = organisationUnitService.addOrganisationUnitLevel( levelA );
 
914
        int idB = organisationUnitService.addOrganisationUnitLevel( levelB );
 
915
        
 
916
        assertEquals( levelA, organisationUnitService.getOrganisationUnitLevel( idA ) );
 
917
        assertEquals( levelB, organisationUnitService.getOrganisationUnitLevel( idB ) );        
 
918
    }
 
919
    
 
920
    public void testGetOrganisationUnitLevels()
 
921
    {
 
922
        OrganisationUnitLevel level1 = new OrganisationUnitLevel( 1, "National" );
 
923
        OrganisationUnitLevel level2 = new OrganisationUnitLevel( 2, "District" );
 
924
        OrganisationUnitLevel level4 = new OrganisationUnitLevel( 4, "PHU" );
 
925
        
 
926
        organisationUnitService.addOrganisationUnitLevel( level1 );
 
927
        organisationUnitService.addOrganisationUnitLevel( level2 );
 
928
        organisationUnitService.addOrganisationUnitLevel( level4 );
 
929
        
 
930
        OrganisationUnit unitA = createOrganisationUnit( 'A' );
 
931
        OrganisationUnit unitB = createOrganisationUnit( 'B', unitA );
 
932
        OrganisationUnit unitC = createOrganisationUnit( 'C', unitB );
 
933
        OrganisationUnit unitD = createOrganisationUnit( 'D', unitC );
 
934
        
 
935
        unitA.getChildren().add( unitB );
 
936
        unitB.getChildren().add( unitC );
 
937
        unitC.getChildren().add( unitD );
 
938
        
 
939
        organisationUnitService.addOrganisationUnit( unitA );
 
940
        organisationUnitService.addOrganisationUnit( unitB );
 
941
        organisationUnitService.addOrganisationUnit( unitC );
 
942
        organisationUnitService.addOrganisationUnit( unitD );
 
943
                
 
944
        Iterator<OrganisationUnitLevel> actual = organisationUnitService.getOrganisationUnitLevels().iterator();
 
945
        
 
946
        assertNotNull( actual );
 
947
        assertEquals( level1, actual.next() );
 
948
        assertEquals( level2, actual.next() );
 
949
        
 
950
        OrganisationUnitLevel level3 = actual.next();
 
951
        
 
952
        assertEquals( 3, level3.getLevel() );
 
953
        assertEquals( "Level 3", level3.getName() );
 
954
        
 
955
        assertEquals( level4, actual.next() );
 
956
    }
 
957
    
 
958
    public void testRemoveOrganisationUnitLevel()
 
959
    {
 
960
        OrganisationUnitLevel levelA = new OrganisationUnitLevel( 1, "National" );
 
961
        OrganisationUnitLevel levelB = new OrganisationUnitLevel( 2, "District" );
 
962
        
 
963
        int idA = organisationUnitService.addOrganisationUnitLevel( levelA );
 
964
        int idB = organisationUnitService.addOrganisationUnitLevel( levelB );
 
965
        
 
966
        assertNotNull( organisationUnitService.getOrganisationUnitLevel( idA ) );
 
967
        assertNotNull( organisationUnitService.getOrganisationUnitLevel( idB ) );
 
968
        
 
969
        organisationUnitService.deleteOrganisationUnitLevel( levelA );
 
970
 
 
971
        assertNull( organisationUnitService.getOrganisationUnitLevel( idA ) );
 
972
        assertNotNull( organisationUnitService.getOrganisationUnitLevel( idB ) );
 
973
 
 
974
        organisationUnitService.deleteOrganisationUnitLevel( levelB );
 
975
 
 
976
        assertNull( organisationUnitService.getOrganisationUnitLevel( idA ) );
 
977
        assertNull( organisationUnitService.getOrganisationUnitLevel( idB ) );        
 
978
    }
 
979
 
 
980
    public void testRemoveOrganisationUnitLevels()
 
981
    {
 
982
        OrganisationUnitLevel levelA = new OrganisationUnitLevel( 1, "National" );
 
983
        OrganisationUnitLevel levelB = new OrganisationUnitLevel( 2, "District" );
 
984
        
 
985
        int idA = organisationUnitService.addOrganisationUnitLevel( levelA );
 
986
        int idB = organisationUnitService.addOrganisationUnitLevel( levelB );
 
987
 
 
988
        assertNotNull( organisationUnitService.getOrganisationUnitLevel( idA ) );
 
989
        assertNotNull( organisationUnitService.getOrganisationUnitLevel( idB ) );
 
990
        
 
991
        organisationUnitService.deleteOrganisationUnitLevels();
 
992
        
 
993
        sessionUtil.clearCurrentSession();
 
994
 
 
995
        assertNull( organisationUnitService.getOrganisationUnitLevel( idA ) );
 
996
        assertNull( organisationUnitService.getOrganisationUnitLevel( idB ) ); 
 
997
    }
 
998
}