package nl.wiegman.home.klimaat;

import nl.wiegman.home.klimaat.Klimaat;
import nl.wiegman.home.klimaat.KlimaatSensor;
import nl.wiegman.home.klimaat.KlimaatRepos;
import nl.wiegman.home.klimaat.KlimaatService;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.context.ApplicationEventPublisher;

import java.math.BigDecimal;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@RunWith(MockitoJUnitRunner.class)
public class KlimaatServiceTest {

    @Mock
    private KlimaatRepos klimaatRepositoryMock;
    @Mock
    private ApplicationEventPublisher applicationEventPublisher;

    @InjectMocks
    private KlimaatService klimaatService;

    @Captor
    private ArgumentCaptor<Klimaat> klimaatArgumentCaptor;

    @Test
    public void testHappyFlow() {
        KlimaatSensor klimaatSensor = new KlimaatSensor();
        klimaatSensor.setCode("LIVINGROOM");

        Klimaat klimaat = new Klimaat();
        klimaat.setTemperatuur(new BigDecimal(20.0));
        klimaat.setLuchtvochtigheid(new BigDecimal(50.0));
        klimaat.setKlimaatSensor(klimaatSensor);
        klimaatService.add(klimaat);

        klimaat = new Klimaat();
        klimaat.setTemperatuur(new BigDecimal(21.0));
        klimaat.setLuchtvochtigheid(new BigDecimal(51.0));
        klimaat.setKlimaatSensor(klimaatSensor);
        klimaatService.add(klimaat);

        klimaat = new Klimaat();
        klimaat.setTemperatuur(new BigDecimal(22.0));
        klimaat.setLuchtvochtigheid(new BigDecimal(52.0));
        klimaat.setKlimaatSensor(klimaatSensor);
        klimaatService.add(klimaat);

        klimaatService.save();

        verify(klimaatRepositoryMock, times(1)).save(klimaatArgumentCaptor.capture());

        Klimaat savedKlimaat = klimaatArgumentCaptor.getValue();
        assertThat(savedKlimaat.getTemperatuur().doubleValue()).isEqualTo(21.0d);
        assertThat(savedKlimaat.getLuchtvochtigheid().doubleValue()).isEqualTo(51.0d);
        assertThat(savedKlimaat.getKlimaatSensor()).isEqualTo(klimaatSensor);
    }
}
@@ -38,177 +38,210 @@
 ort 
-nl.wiegman.home.klimaat.Klimaat;%0Aimport nl.wiegman.home.klimaat.KlimaatSensor;%0Aimport nl.wiegman.home.klimaat.KlimaatRepos;%0Aimport nl.wiegman.home.klimaat.KlimaatService
+static org.assertj.core.api.Assertions.assertThat;%0Aimport static org.mockito.Mockito.times;%0Aimport static org.mockito.Mockito.verify;%0Aimport static org.mockito.Mockito.when;%0A%0Aimport java.math.BigDecimal
 ;%0A%0Ai
@@ -492,417 +492,388 @@
 ork.
-context.ApplicationEventPublisher;%0A%0Aimport java.math.BigDecimal;%0A%0Aimport static org.assertj.core.api.Assertions.assertThat;%0Aimport static org.mockito.Mockito.times;%0Aimport static org.mockito.Mockito.verify;%0A%0A@RunWith(MockitoJUnitRunner.class)%0Apublic class KlimaatServiceTest %7B%0A%0A    @Mock%0A    private KlimaatRepos klimaatRepositoryMock;%0A    @Mock%0A    private ApplicationEventPublisher applicationEventPublisher
+messaging.simp.SimpMessagingTemplate;%0A%0A@RunWith(MockitoJUnitRunner.class)%0Apublic class KlimaatServiceTest %7B%0A%0A    @Mock%0A    private KlimaatRepos klimaatRepository;%0A    @Mock%0A    private KlimaatSensorRepository klimaatSensorRepository;%0A    @Mock%0A    private KlimaatSensorValueTrendService klimaatSensorValueTrendService;%0A    @Mock%0A    private SimpMessagingTemplate messagingTemplate
 ;%0A%0A 
@@ -1048,16 +1048,65 @@
 low() %7B%0A
+        String klimaatSensorCode = %22LIVINGROOM%22;%0A
         
@@ -1186,28 +1186,134 @@
 setCode(
-%22LIVINGROOM%22
+klimaatSensorCode);%0A%0A        when(klimaatSensorRepository.findFirstByCode(klimaatSensorCode)).thenReturn(klimaatSensor
 );%0A%0A    
@@ -2079,20 +2079,16 @@
 pository
-Mock
 , times(

Fix test