@Before public void setup() { bean = mock(BeanMock1.class); holder = new MetadataItemHolderFixture(bean); listener = mock(PropertyChangeListener.class); holder2 = new MetadataItemHolderFixture(bean, SOURCE_NAME, ORIGIN, TIMESTAMP1); }
@Test public void testSetLatestModificationTime() { holder.addPropertyChangeListener(listener); holder.setLatestModificationTime(TIMESTAMP1); holder.setLatestModificationTime(TIMESTAMP2); final InOrder inOrder = inOrder(listener); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "latestModificationTime", null, TIMESTAMP1))); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "latestModificationTime", TIMESTAMP1, TIMESTAMP2))); verifyNoMoreInteractions(listener); }
@Override public boolean isAvailable() { return get().isAvailable(); } }
@Test public void testBeanMock1WithOriginAndSourceName() { stub(bean.toString()).toReturn("MockToString"); // stub(beanMock1.hashCode()).toReturn(12345678); assertSame(holder2.get(), bean); assertEquals(TIMESTAMP1, holder2.getLatestModificationTime()); assertEquals(ORIGIN, holder2.getOrigin()); assertEquals(SOURCE_NAME, holder2.getSourceName()); assertEquals("MetadataItemHolderFixture[origin, source, MockToString]", holder2.toString()); assertEquals(bean.hashCode(), holder2.hashCode()); verify(bean).addPropertyChangeListener((PropertyChangeListener)same(holder2.propertyChangeListener)); }
@Test public void testRemovePropertyChangeListener() { final PropertyChangeSupport pcs = spy(holder.pcs); holder.addPropertyChangeListener(listener); assertEquals(new PropertyChangeListener[] { listener }, holder.pcs.getPropertyChangeListeners()); assertEquals(new PropertyChangeListener[] { listener }, holder.getPropertyChangeListeners()); holder.removePropertyChangeListener(listener); assertEquals(new PropertyChangeListener[0], holder.pcs.getPropertyChangeListeners()); assertEquals(new PropertyChangeListener[0], holder.getPropertyChangeListeners()); // verify(pcs).removePropertyChangeListener(listener); // verifyNoMoreInteractions(pcs); }
@Test public void testAddPropertyChangeListener() { final PropertyChangeSupport pcs = spy(holder.pcs); holder.addPropertyChangeListener(listener); assertEquals(new PropertyChangeListener[] { listener }, holder.pcs.getPropertyChangeListeners()); assertEquals(new PropertyChangeListener[] { listener }, holder.getPropertyChangeListeners()); // verify(pcs).addPropertyChangeListener(listener); // verifyNoMoreInteractions(pcs); }
@Test public void testBeanIsAvailableChange() { stub(bean.isAvailable()).toReturn(false); holder.addPropertyChangeListener(listener); final TimestampProviderMock timestampProvider = (TimestampProviderMock)TimestampProvider.Locator.findTimestampProvider(); // Test a bean property change that makes bean.isAvailable() to transition from false to true timestampProvider.setTimestamp(TIMESTAMP1); assertFalse(bean.isAvailable()); stub(bean.isAvailable()).toReturn(true); holder.propertyChangeListener.propertyChange(new MyPropertyChangeEvent(bean, "stringProperty", null, "newValue")); // Test a bean property change that makes bean.isAvailable() to transition from true to false timestampProvider.setTimestamp(TIMESTAMP2); assertTrue(bean.isAvailable()); stub(bean.isAvailable()).toReturn(false); holder.propertyChangeListener.propertyChange(new MyPropertyChangeEvent(bean, "stringProperty", "newValue", null)); // Test a bean property change that makes bean.isAvailable() to stay false timestampProvider.setTimestamp(TIMESTAMP3); assertFalse(bean.isAvailable()); holder.propertyChangeListener.propertyChange(new MyPropertyChangeEvent(bean, "stringProperty", null, null)); final InOrder inOrder = inOrder(listener); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "latestModificationTime", null, TIMESTAMP1))); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "available", false, true))); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "latestModificationTime", TIMESTAMP1, TIMESTAMP2))); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "available", true, false))); inOrder.verify(listener).propertyChange(refEq(new MyPropertyChangeEvent(holder, "latestModificationTime", TIMESTAMP2, TIMESTAMP3))); verifyNoMoreInteractions(listener); } }
@Test public void testBeanMock1() { stub(bean.toString()).toReturn("MockToString"); // stub(beanMock1.hashCode()).toReturn(12345678); assertSame(holder.get(), bean); assertNull(holder.getLatestModificationTime()); assertNull(holder.getOrigin()); assertNull(holder.getSourceName()); assertEquals("MetadataItemHolderFixture[null, null, MockToString]", holder.toString()); assertEquals(bean.hashCode(), holder.hashCode()); verify(bean).addPropertyChangeListener((PropertyChangeListener)same(holder.propertyChangeListener)); }