package rmblworx.tools.timey.persistence.service; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import rmblworx.tools.timey.vo.AlarmDescriptor; import rmblworx.tools.timey.vo.TimeDescriptor; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * @author mmatthies */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/spring-timey-context.xml", "/alarm-spring-timey-context.xml" }) public class AlarmServiceTest { private static final int EXPECTED_MILLISECONDS = 1000; private static final String KEIN_ALARMZEITPUNKT_ERZEUGT = "Kein Alarmzeitpunkt erzeugt!"; private static final String NOT_NULL_MSG = "Es wurde kein null zurückgegeben!"; private AlarmDescriptor expectedAlarmDescriptor; @Qualifier("alarmService") @Autowired private IAlarmService service; @Before public final void setUp() { this.expectedAlarmDescriptor = new AlarmDescriptor(new TimeDescriptor(EXPECTED_MILLISECONDS), true, "Text", "/bla", new TimeDescriptor(EXPECTED_MILLISECONDS + 1)); } @After public final void tearDown() { this.expectedAlarmDescriptor = null; } /** * Test method for {@link IAlarmService#create(AlarmDescriptor)}. */ @Test public final void testCreate() { boolean found = false; assertTrue(KEIN_ALARMZEITPUNKT_ERZEUGT, this.service.create(this.expectedAlarmDescriptor)); final List<AlarmDescriptor> actualList = this.service.getAll(); for (final AlarmDescriptor alarmDescriptor : actualList) { if (alarmDescriptor.getAlarmtime().getMilliSeconds() == EXPECTED_MILLISECONDS) { found = true; } } assertTrue(KEIN_ALARMZEITPUNKT_ERZEUGT, found); this.service.delete(this.expectedAlarmDescriptor); } /** * Testet das Speichern eines Alarms ohne Klingelton. */ @Test public final void testCreateAlarmWithoutSound() { final AlarmDescriptor alarm = new AlarmDescriptor(new TimeDescriptor(0), true, "Text", null, null); try { assertTrue(KEIN_ALARMZEITPUNKT_ERZEUGT, this.service.create(alarm)); boolean found = false; for (final AlarmDescriptor ad : this.service.getAll()) { if (ad.getSound() == null) { found = true; break; } } assertTrue(KEIN_ALARMZEITPUNKT_ERZEUGT, found); } finally { this.service.delete(alarm); } } /** * Test method for {@link IAlarmService#delete(AlarmDescriptor)}. */ @Test public final void testDeleteAlarm() { assertTrue(KEIN_ALARMZEITPUNKT_ERZEUGT, this.service.create(this.expectedAlarmDescriptor)); assertTrue(this.service.delete(this.expectedAlarmDescriptor)); final List<AlarmDescriptor> actualList = this.service.getAll(); for (final AlarmDescriptor timeDescriptor : actualList) { if (timeDescriptor.getAlarmtime().getMilliSeconds() == this.expectedAlarmDescriptor.getAlarmtime() .getMilliSeconds()) { fail("Alarmzeitpunkt wurde nicht gelöscht!"); } } } /** * Test method for {@link IAlarmService#delete(AlarmDescriptor)}. */ @Test public final void testDeleteAlarmShouldFailBecauseDescriptorIsNull() { assertNull(NOT_NULL_MSG, this.service.delete(null)); } /** * Test method for {@link IAlarmService#isActivated(AlarmDescriptor)}. */ @Test public void testIsActivatedShouldReturnNullBecauseTimestampIsNotPresent() { assertNull(this.service.isActivated(this.expectedAlarmDescriptor)); assertNull(this.service.isActivated(null)); } /** * Test method for {@link IAlarmService#setState(AlarmDescriptor, Boolean)}. */ @Test public final void testSetIsActivated() { final Boolean expectedState = Boolean.TRUE; this.service.create(this.expectedAlarmDescriptor); this.service.setState(this.expectedAlarmDescriptor, expectedState); assertTrue(this.service.isActivated(this.expectedAlarmDescriptor)); this.service.delete(this.expectedAlarmDescriptor); } /** * Test method for {@link IAlarmService#setState(AlarmDescriptor, Boolean)}. */ @Test public final void testSetIsActivatedShouldFailBecauseDescriptorIsNull() { assertNull(NOT_NULL_MSG, this.service.setState(null, Boolean.FALSE)); } }