public async Task GetTemperatureSensorByIdAsync_Successful() { string response = "{\"state\":{\"temperature\":2354,\"lastupdated\":\"2020-08-19T10:43:17\"},\"swupdate\":{\"state\":\"noupdates\",\"lastinstall\":\"2019-03-12T13:27:46\"},\"config\":{\"on\":true,\"battery\":60,\"reachable\":true,\"alert\":\"none\",\"ledindication\":false,\"usertest\":false,\"pending\":[]},\"name\":\"Hue temperature sensor 1\",\"type\":\"ZLLTemperature\",\"modelid\":\"SML001\",\"manufacturername\":\"Signify Netherlands B.V.\",\"productname\":\"Hue temperature sensor\",\"swversion\":\"6.1.1.27575\",\"uniqueid\":\"00:17:88:01:03:28:3e:d2-02-0402\",\"capabilities\":{\"certified\":true,\"primary\":false}}"; HttpStatusCode statusCode = HttpStatusCode.OK; var messageHandlerMock = new HttpMessageHandlerMock(response, statusCode); var httpClient = new HttpClient(messageHandlerMock); var clientFactory = Substitute.For <IHttpClientFactory>(); clientFactory.CreateClient().Returns(httpClient); var optionsMonitor = Substitute.For <IOptionsMonitor <HueOptions> >(); var hueOptions = new HueOptions() { BridgeIP = "192.168.0.5", BridgePort = 0, UserKey = "abc123" }; optionsMonitor.CurrentValue.Returns(hueOptions); var hueSensorProvider = new HueSensorProvider(clientFactory, optionsMonitor); var sensor = await hueSensorProvider.GetTemperatureSensorByIdAsync(6); Assert.NotNull(sensor); Assert.Equal(6, sensor.Id); Assert.Equal(SensorType.Temperature, sensor.Type); Assert.Equal(60, sensor.BatteryPercentage); Assert.Equal(23.54f, sensor.State.Temperature); }
public async Task GetTemperatureSensorByIdAsync_IdNotExisting() { string response = "[{\"error\":{\"type\":3,\"address\":\"/sensors/60\",\"description\":\"resource, /sensors/60, not available\"}}]"; HttpStatusCode statusCode = HttpStatusCode.OK; var messageHandlerMock = new HttpMessageHandlerMock(response, statusCode); var httpClient = new HttpClient(messageHandlerMock); var clientFactory = Substitute.For <IHttpClientFactory>(); clientFactory.CreateClient().Returns(httpClient); var optionsMonitor = Substitute.For <IOptionsMonitor <HueOptions> >(); var hueOptions = new HueOptions() { BridgeIP = "192.168.0.5", BridgePort = 0, UserKey = "abc123" }; optionsMonitor.CurrentValue.Returns(hueOptions); var hueSensorProvider = new HueSensorProvider(clientFactory, optionsMonitor); var sensor = await hueSensorProvider.GetTemperatureSensorByIdAsync(60); Assert.Null(sensor); }