using NSubstitute; using NUnit.Framework; using ShareeBike.Model.Bikes.BikeInfoNS.CopriLock; using ShareeBike.Model.Services.CopriApi; using ShareeBike.Services.CopriApi; using ShareeBike.Repository.Request; using System.Threading.Tasks; using ShareeBike.Repository.Response; using ShareeBike.Repository; namespace SharedBusinessLogic.Tests.Services.CopriApi { [TestFixture] public class TestPolling { [Test] public async Task TestOpenAyncLockStateUnknownDisconnected() { var server = Substitute.For(); var bike = Substitute.For(); bike.Id.Returns("XY19"); bike.OperatorUri.Returns(new System.Uri("https://1.2.3.4")); await Polling.OpenAync(server, bike); Received.InOrder( () => { server.UpdateLockingStateAsync( "XY19", lock_state.unlocking, new System.Uri("https://1.2.3.4")); bike.LockInfo.State = LockingState.UnknownDisconnected; }); } [Test] public async Task TestOpenAyncLock() { var server = Substitute.For(); var bike = Substitute.For(); bike.Id.Returns("XY19"); bike.OperatorUri.Returns(new System.Uri("https://1.2.3.4")); server.GetBikesOccupied(false).Returns( new Result( typeof(CopriCallsHttps), JsonConvertRethrow.DeserializeObject(@" { ""bikes_occupied"": { ""FR1005"": { ""lock_state"": ""occupied"", ""system"": ""Sigo"", ""state"": ""occupied"", ""bike"": ""XY19"", ""station"": ""REN0"", ""lock_state"" : ""locked"" } }, ""copri_version"": ""4.1.12.5"", }"), new GeneralData()), new Result( typeof(CopriCallsHttps), JsonConvertRethrow.DeserializeObject(@" { ""bikes_occupied"": { ""FR1005"": { ""lock_state"": ""occupied"", ""system"": ""Sigo"", ""state"": ""occupied"", ""bike"": ""XY19"", ""station"": ""REN0"", ""lock_state"" : ""unlocked"" } }, ""copri_version"": ""4.1.12.5"", }"), new GeneralData())); await Polling.OpenAync(server, bike); Received.InOrder( () => { server.UpdateLockingStateAsync( "XY19", lock_state.unlocking, new System.Uri("https://1.2.3.4")); server.GetBikesOccupied(false); server.GetBikesOccupied(false); bike.LockInfo.State = LockingState.Open; }); } } }