public void Test1() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); client.Config.Access.WaitOnError = TimeSpan.Zero; var onlineService = client.ApiService; // выключим интернет var offlineService = new FakeApiService(); client.SetApiService(offlineService); var root = client.GetRootComponentControl(); Assert.True(root.IsFake()); Assert.Null(root.Info); Assert.NotNull(root.Log); var getOrCreateData = TestHelper.GetRandomGetOrCreateComponentData(client); var child = root.GetOrCreateChildComponentControl(getOrCreateData); Assert.True(child.IsFake()); Assert.Null(child.Info); // включим интернет client.SetApiService(onlineService); Assert.False(root.IsFake()); Assert.NotNull(root.Info); Assert.False(child.IsFake()); Assert.NotNull(child.Info); }
public static IClient GetOfflineClient() { var config = new Config(); var service = new FakeApiService(); var client = new Client(service, config); return(client); }
public void OfflineTest() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); client.Config.Access.WaitOnError = TimeSpan.Zero; var onlineService = client.ApiService; // получим онлайн контрол var component1 = account.CreateRandomComponentControl(); Assert.False(component1.IsFake()); // выключим интернет var offlineService = new FakeApiService(); client.SetApiService(offlineService); // получим фейковый контрол var component2 = account.CreateRandomComponentControl(); Assert.True(component2.IsFake()); // отправим 2 сообщения component1.Log.Info("test 1"); component2.Log.Info("test 1"); component1.Log.Info("test 2"); component2.Log.Info("test 2"); component1.Log.Flush(); // включим интернет client.SetApiService(onlineService); // проверим, что логов у component1 еще нет var logsResponce1 = component1.GetLogs(new GetLogsFilter()); Assert.True(logsResponce1.Success); Assert.Equal(0, logsResponce1.Data.Count); // проверим, что логов у component2 еще нет var logsResponce2 = component2.GetLogs(new GetLogsFilter()); Assert.True(logsResponce2.Success); Assert.Equal(0, logsResponce2.Data.Count); // получим логи, записанные в оффлайн режиме component1.Log.Flush(); logsResponce1 = component1.GetLogs(new GetLogsFilter()); Assert.True(logsResponce1.Success); Assert.Equal(2, logsResponce1.Data.Count); // у component2 логов не будет, т.к. в оффлайн режиме у него веб-лог конфиг выключен! component1.Log.Flush(); logsResponce2 = component2.GetLogs(new GetLogsFilter()); Assert.True(logsResponce2.Success); Assert.Equal(0, logsResponce2.Data.Count); }
public void OfflineSendEventTest() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); client.Config.Access.WaitOnError = TimeSpan.Zero; var offlineService = new FakeApiService(); client.SetApiService(offlineService); var root = client.GetRootComponentControl(); Assert.True(root.IsFake()); var eventObj = root.CreateComponentEvent(Guid.NewGuid().ToString()); var response = eventObj.Send(); Assert.False(response.Success); }
public void OfflineTest() { IClient client = TestHelper.GetTestAccount().GetClient(); client.Config.Access.WaitOnError = TimeSpan.FromMinutes(10); var offlineService = new FakeApiService(); var onlineService = client.ApiService; var data = new GetOrCreateComponentTypeData("TestComponentType") { DisplayName = "test display name" }; // интернет включен var control1 = client.GetOrCreateComponentTypeControl(data); var control2 = client.GetOrCreateComponentTypeControl(data); Assert.False(control1.IsFake()); // чтобы заставить выполнить запрос // интернет выключен client.SetApiService(offlineService); var control3 = client.GetOrCreateComponentTypeControl(data); // проверим Assert.False(control1.IsFake()); // потому что загрузил свои данные когда был интернет Assert.True(control2.IsFake()); // потому что независимая обертка Assert.True(control3.IsFake()); Assert.False(object.ReferenceEquals(control1, control2)); Assert.False(object.ReferenceEquals(control1, control3)); var control4 = client.GetOrCreateComponentTypeControl("test"); Assert.True(control4.IsFake()); // интернета нет client.SetApiService(onlineService); client.Config.Access.WaitOnError = TimeSpan.Zero; Assert.False(control3.IsFake()); // интернет есть Assert.False(control4.IsFake()); // интернет есть }
public void BasicTest() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); // запустим таймер с новым периодом client.Config.Events.EventManager.SendPeriod = TimeSpan.FromMinutes(30); client.Config.Access.WaitOnError = TimeSpan.Zero; // вычислим время Assert.True((client as Client).CanConvertToServerDate()); var offlineWebService = new FakeApiService(); var onlineWebService = client.ApiService; // выключим интернет client.SetApiService(offlineWebService); var component = account.CreateRandomComponentControl(); // добавим событие в очередь string eventType = "test event " + Guid.NewGuid(); string messageText = "test message " + Guid.NewGuid(); var result = component.AddComponentEvent(eventType, messageText); Assert.Equal(result.Status, AddEventStatus.WaitForSend); component.Client.EventManager.Flush(); Assert.Equal(result.Status, AddEventStatus.WaitForSend); Assert.True(component.IsFake()); Assert.Equal(result.Errors, 0); // потому что компонент фейковый // включим интернет client.SetApiService(onlineWebService); Assert.False(component.IsFake()); component.Client.EventManager.Flush(); Assert.Equal(result.Status, AddEventStatus.Sended); Assert.Equal(0, result.Errors); Assert.True(result.EventId.HasValue); // проверим, что событие записалось в БД var eventInfo = client.ApiService.GetEventById(result.EventId.Value); Assert.NotNull(eventInfo); Assert.Equal(eventType, eventInfo.Data.TypeDisplayName); Assert.Equal(messageText, eventInfo.Data.Message); Assert.Equal(1, eventInfo.Data.Count); // продлим result = component.AddComponentEvent(eventType, messageText); Assert.Equal(AddEventStatus.WaitForJoin, result.Status); component.Client.EventManager.Flush(); Assert.Equal(AddEventStatus.Joined, result.Status); // проверим, что продлилось account.SaveAllCaches(); eventInfo = client.ApiService.GetEventById(result.EventId.Value); Assert.NotNull(eventInfo); Assert.Equal(eventType, eventInfo.Data.TypeDisplayName); Assert.Equal(messageText, eventInfo.Data.Message); Assert.Equal(2, eventInfo.Data.Count); // продлим с новым message // события с разным message теперь не склеиваются /* * string messageText2 = Guid.NewGuid().ToString(); * result = component.AddComponentEvent(eventType, messageText2); * component.Client.EventManager.Flush(); * * // проверим, что продлилось + изменился message * AllCaches.SaveChanges(); * eventInfo = client.ApiService.GetEventById(result.EventId.Value); * Assert.Equal(messageText2, eventInfo.Data.Message); * Assert.Equal(3, eventInfo.Data.Count); */ }