WHEN_client_recieves_data_THEN_it_should_call_ondata() { var client = StreamdataClient <StockMarketOrders> .WithConfiguration(conf => { conf.UseSandbox(); conf.UserServerSentEventEngine <FakeEngine>(); }); StockMarketOrders testData = null; StockMarketOrders expectedMarketOrders = new StockMarketOrders(); expectedMarketOrders.Add(new Order() { Price = 10, Title = "test1" }); expectedMarketOrders.Add(new Order() { Price = 20, Title = "test2" }); client.OnData(data => testData = data); client.Start("fakeurl"); FakeEngineWrapper.Instance.SendData(expectedMarketOrders); Check.That(testData).IsNotNull(); Check.That(testData.GetTotal()).IsEqualTo(30); }
WHEN_client_recieves_patch_THEN_it_should_call_onpatch_and_updateddata() { var client = StreamdataClient <StockMarketOrders> .WithConfiguration(conf => { conf.UseSandbox(); conf.UserServerSentEventEngine <FakeEngine>(); }); StockMarketOrders testData = null; StockMarketOrders expectedMarketOrders = new StockMarketOrders(); expectedMarketOrders.Add(new Order() { Price = 10, Title = "test1" }); expectedMarketOrders.Add(new Order() { Price = 20, Title = "test2" }); client.OnData(data => testData = data); client.OnPatch(patch => patch.ApplyTo(testData)); client.Start("fakeurl"); FakeEngineWrapper.Instance.SendData(expectedMarketOrders); var patchDoc = new JsonPatchDocument <StockMarketOrders>(new List <Operation <StockMarketOrders> > { new Operation <StockMarketOrders>("replace", "0/price", "0/price", 30) }); FakeEngineWrapper.Instance.SendPatch(patchDoc); Check.That(testData).IsNotNull(); Check.That(testData).HasSize(2); Check.That(testData.GetTotal()).IsEqualTo(50); }
WHEN_client_has_data_and_patch_THEN_state_is_updated() { var client = StreamdataClient <StockMarketOrders> .WithConfiguration(conf => { conf.UseSandbox(); conf.UserServerSentEventEngine <FakeEngine>(); conf.KeepStateUpdated(); }); StockMarketOrders expectedMarketOrders = new StockMarketOrders(); expectedMarketOrders.Add(new Order() { Price = 10, Title = "test1" }); expectedMarketOrders.Add(new Order() { Price = 20, Title = "test2" }); StockMarketOrders actualState = null; client.Start("fakeurl"); client.OnUpdatedState += state => actualState = state; FakeEngineWrapper.Instance.SendData(expectedMarketOrders); var patch = new JsonPatchDocument <StockMarketOrders>(new List <Operation <StockMarketOrders> > { new Operation <StockMarketOrders>("replace", "0/price", "0/price", 20) }); FakeEngineWrapper.Instance.SendPatch(patch); Check.That(actualState).IsNotNull(); Check.That(actualState.GetTotal()).IsEqualTo(40); }