(no commit message)
[utils] / wicket / joe / src / test / java / org / wamblee / wicket / model / DetachableEntityTest.java
1 /*
2  * Copyright 2005-2010 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.wicket.model;
17
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.wamblee.persistence.Detachable;
21
22 import static org.mockito.Mockito.*;
23 import static junit.framework.TestCase.*; 
24
25 public class DetachableEntityTest {
26     
27     public static class X { 
28         
29     }
30     
31     private Detachable<X> detachable;
32     private DetachableEntity<X> entity; 
33     
34     @Before
35     public void setUp() { 
36         detachable = mock(Detachable.class);
37         entity = new DetachableEntity<X>(detachable);
38     }
39
40     @Test
41     public void testGetObject() {
42         X x = new X(); 
43         when(detachable.get()).thenReturn(x);
44         X value = entity.getObject();
45         assertSame(x, value);
46         verify(detachable).get();
47     }
48
49     @Test
50     public void testOnDetachReattach() {
51         X x = new X(); 
52         when(detachable.get()).thenReturn(x);
53         
54         entity.onDetach();
55         verify(detachable).detach();
56         
57         X y = entity.getObject();
58         assertSame(x, y); 
59         verify(detachable).get();
60     }
61
62     @Test(expected = UnsupportedOperationException.class)
63     public void testSetObject() {
64         X x = new X(); 
65         entity.setObject(x);
66     }
67 }