@Test
  public void testEquivalent() throws ResourceNotFoundException {
    Sensor newSensor = Mockito.mock(Sensor.class);
    Map<String, Object> props = new HashMap<>();
    props.put("fuelType", "diesel");
    props.put("constructionYear", 2015);
    props.put("engineDisplacement", 1234);
    props.put("model", "Dito");
    props.put("manufacturer", "Vito");
    Mockito.when(newSensor.getProperties()).thenReturn(props);

    SensorDao dao = createDao();

    CarSimilarityServiceImpl service = new CarSimilarityServiceImpl(dao);
    CarSimilarityServiceImpl serviceMock = Mockito.spy(service);
    serviceMock.setSimilarityDefinition("/car-similarity-test.json");

    Sensor equi = serviceMock.resolveEquivalent(newSensor);
    Assert.assertThat(equi, Matchers.is(oldSensor));

    props.put("manufacturer", "vito mobile  ");

    Sensor similar = serviceMock.resolveEquivalent(newSensor);
    Assert.assertThat(similar, Matchers.is(oldSensor));

    Mockito.verify(serviceMock, Mockito.times(1))
        .isManufacturerSimilar(Mockito.any(String.class), Mockito.any(String.class));
  }
  @Test(expected = ResourceNotFoundException.class)
  public void testNoMapping() throws ResourceNotFoundException {
    SensorDao dao = createDao();

    CarSimilarityServiceImpl service = new CarSimilarityServiceImpl(dao);
    service.setSimilarityDefinition("/car-similarity-test.json");

    service.resolveMappedSensor("i-am-no-id");
  }
  @Test
  public void testStaticMapping() throws ResourceNotFoundException {
    SensorDao dao = createDao();

    CarSimilarityServiceImpl service = new CarSimilarityServiceImpl(dao);
    service.setSimilarityDefinition("/car-similarity-test.json");

    Sensor resolved = service.resolveMappedSensor("51ffab4fe4b058cd3d654007");
    Assert.assertThat(resolved, Matchers.is(oldSensor));
  }
  @Test
  public void testMappingIdsCollection() {
    String id = "51ffab4fe4b058cd3d654007";

    CarSimilarityServiceImpl service = new CarSimilarityServiceImpl(Mockito.mock(SensorDao.class));
    service.setSimilarityDefinition("/car-similarity-test.json");

    Collection<String> mapped = service.getMappedSensorIds();

    Assert.assertThat(mapped.size(), Matchers.is(1));
    Assert.assertThat(mapped.iterator().next(), Matchers.is(id));
  }
  @Test(expected = ResourceNotFoundException.class)
  public void testNoEquivalent() throws ResourceNotFoundException {
    Sensor newSensor = Mockito.mock(Sensor.class);
    Map<String, Object> props = new HashMap<>();
    props.put("fuelType", "diesel");
    props.put("constructionYear", 2015);
    props.put("engineDisplacement", 1234);
    props.put("model", "Wagon");
    props.put("manufacturer", "Odd");
    Mockito.when(newSensor.getProperties()).thenReturn(props);

    SensorDao dao = createDao();

    CarSimilarityServiceImpl service = new CarSimilarityServiceImpl(dao);
    CarSimilarityServiceImpl serviceMock = Mockito.spy(service);
    serviceMock.setSimilarityDefinition("/car-similarity-test.json");

    serviceMock.resolveEquivalent(newSensor);
  }