~ubuntu-branches/ubuntu/wily/libhibernate3-java/wily-proposed

« back to all changes in this revision

Viewing changes to test/org/hibernate/test/subclassfilter/UnionSubclassFilterTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-10-14 14:43:34 UTC
  • Revision ID: james.westby@ubuntu.com-20071014144334-eamc8i0q10gs1aro
Tags: upstream-3.2.5
ImportĀ upstreamĀ versionĀ 3.2.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// $Id: UnionSubclassFilterTest.java 10976 2006-12-12 23:22:26Z steve.ebersole@jboss.com $
 
2
package org.hibernate.test.subclassfilter;
 
3
 
 
4
import java.util.ArrayList;
 
5
import java.util.HashSet;
 
6
import java.util.Iterator;
 
7
import java.util.List;
 
8
 
 
9
import junit.framework.Test;
 
10
 
 
11
import org.hibernate.Transaction;
 
12
import org.hibernate.classic.Session;
 
13
import org.hibernate.junit.functional.FunctionalTestCase;
 
14
import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
 
15
 
 
16
/**
 
17
 * Implementation of DiscrimSubclassFilterTest.
 
18
 *
 
19
 * @author Steve Ebersole
 
20
 */
 
21
public class UnionSubclassFilterTest extends FunctionalTestCase {
 
22
 
 
23
        public UnionSubclassFilterTest(String name) {
 
24
                super( name );
 
25
        }
 
26
 
 
27
        public final String[] getMappings() {
 
28
                return new String[] { "subclassfilter/union-subclass.hbm.xml" };
 
29
        }
 
30
 
 
31
        public static Test suite() {
 
32
                return new FunctionalTestClassTestSuite( UnionSubclassFilterTest.class );
 
33
        }
 
34
 
 
35
        public void testFiltersWithUnionSubclass() {
 
36
                Session s = openSession();
 
37
                s.enableFilter( "region" ).setParameter( "userRegion", "US" );
 
38
                Transaction t = s.beginTransaction();
 
39
 
 
40
                prepareTestData( s );
 
41
                s.clear();
 
42
 
 
43
                List results;
 
44
                Iterator itr;
 
45
 
 
46
                results = s.createQuery( "from Person" ).list();
 
47
                assertEquals( "Incorrect qry result count", 4, results.size() );
 
48
                s.clear();
 
49
 
 
50
                results = s.createQuery( "from Employee" ).list();
 
51
                assertEquals( "Incorrect qry result count", 2, results.size() );
 
52
                s.clear();
 
53
 
 
54
                results = new ArrayList( new HashSet( s.createQuery( "from Person as p left join fetch p.minions" ).list() ) );
 
55
                assertEquals( "Incorrect qry result count", 4, results.size() );
 
56
                itr = results.iterator();
 
57
                while ( itr.hasNext() ) {
 
58
                        // find john
 
59
                        final Person p = ( Person ) itr.next();
 
60
                        if ( p.getName().equals( "John Doe" ) ) {
 
61
                                Employee john = ( Employee ) p;
 
62
                                assertEquals( "Incorrect fecthed minions count", 1, john.getMinions().size() );
 
63
                                break;
 
64
                        }
 
65
                }
 
66
                s.clear();
 
67
 
 
68
                results = new ArrayList( new HashSet( s.createQuery( "from Employee as p left join fetch p.minions" ).list() ) );
 
69
                assertEquals( "Incorrect qry result count", 2, results.size() );
 
70
                itr = results.iterator();
 
71
                while ( itr.hasNext() ) {
 
72
                        // find john
 
73
                        final Person p = ( Person ) itr.next();
 
74
                        if ( p.getName().equals( "John Doe" ) ) {
 
75
                                Employee john = ( Employee ) p;
 
76
                                assertEquals( "Incorrect fecthed minions count", 1, john.getMinions().size() );
 
77
                                break;
 
78
                        }
 
79
                }
 
80
 
 
81
                t.commit();
 
82
                s.close();
 
83
 
 
84
                s = openSession();
 
85
                t = s.beginTransaction();
 
86
                s.delete( "from Person" );
 
87
                t.commit();
 
88
                s.close();
 
89
 
 
90
        }
 
91
 
 
92
        private void prepareTestData(Session s) {
 
93
                Employee john = new Employee( "John Doe" );
 
94
                john.setCompany( "JBoss" );
 
95
                john.setDepartment( "hr" );
 
96
                john.setTitle( "hr guru" );
 
97
                john.setRegion( "US" );
 
98
 
 
99
                Employee polli = new Employee( "Polli Wog" );
 
100
                polli.setCompany( "JBoss" );
 
101
                polli.setDepartment( "hr" );
 
102
                polli.setTitle( "hr novice" );
 
103
                polli.setRegion( "US" );
 
104
                polli.setManager( john );
 
105
                john.getMinions().add( polli );
 
106
 
 
107
                Employee suzie = new Employee( "Suzie Q" );
 
108
                suzie.setCompany( "JBoss" );
 
109
                suzie.setDepartment( "hr" );
 
110
                suzie.setTitle( "hr novice" );
 
111
                suzie.setRegion( "EMEA" );
 
112
                suzie.setManager( john );
 
113
                john.getMinions().add( suzie );
 
114
 
 
115
                Customer cust = new Customer( "John Q Public" );
 
116
                cust.setCompany( "Acme" );
 
117
                cust.setRegion( "US" );
 
118
                cust.setContactOwner( john );
 
119
 
 
120
                Person ups = new Person( "UPS guy" );
 
121
                ups.setCompany( "UPS" );
 
122
                ups.setRegion( "US" );
 
123
 
 
124
                s.save( john );
 
125
                s.save( cust );
 
126
                s.save( ups );
 
127
 
 
128
                s.flush();
 
129
        }
 
130
}