#set( $dt = $package.getClass().forName("java.util.Date").newInstance() ) #set( $year = $dt.getYear() + 1900 ) /** * Copyright (c) 2010-${year} by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package ${package}; import static org.hamcrest.CoreMatchers.*; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.MockitoAnnotations.initMocks; import ${package}.handler.${bindingIdCamelCase}Handler; import org.eclipse.smarthome.core.thing.Thing; import org.eclipse.smarthome.core.thing.ThingStatusInfo; import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.thing.binding.ThingHandlerCallback; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; /** * Tests cases for {@link ${bindingIdCamelCase}Handler}. The tests provide mocks for supporting entities using Mockito. * * @author ${author} - Initial contribution */ public class ${bindingIdCamelCase}HandlerTest { private ThingHandler handler; @Mock private ThingHandlerCallback callback; @Mock private Thing thing; @Before public void setUp() { initMocks(this); handler = new ${bindingIdCamelCase}Handler(thing); handler.setCallback(callback); } @Test public void initializeShouldCallTheCallback() { // we expect the handler#initialize method to call the callback during execution and // pass it the thing and a ThingStatusInfo object containing the ThingStatus of the thing. handler.initialize(); // the argument captor will capture the argument of type ThingStatusInfo given to the // callback#statusUpdated method. ArgumentCaptor<ThingStatusInfo> statusInfoCaptor = ArgumentCaptor.forClass(ThingStatusInfo.class); // verify the interaction with the callback and capture the ThingStatusInfo argument: verify(callback).statusUpdated(eq(thing), statusInfoCaptor.capture()); // assert that the ThingStatusInfo given to the callback was build with the ONLINE status: ThingStatusInfo thingStatusInfo = statusInfoCaptor.getValue(); Assert.assertThat(thingStatusInfo.getStatus(), is(equalTo(ThingStatus.ONLINE))); } }