Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public static IClient GetOfflineClient()
        {
            var config  = new Config();
            var service = new FakeApiService();
            var client  = new Client(service, config);

            return(client);
        }
Ejemplo n.º 3
0
        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()); // интернет есть
        }
Ejemplo n.º 6
0
        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);
             */
        }