private bool IsServerStale()
 {
     //если пользователя нет, значит база была перезалита и локальная база не актуальна
     using (var session = IntegrationFixture.Factory.OpenSession()) {
         var user = session.Query <TestUser>().FirstOrDefault(u => u.Login == ServerFixture.DebugLogin());
         if (user != null)
         {
             serverUserId = user.Id;
         }
         return(user == null);
     }
 }
 //создаем пользователя для ручного тестирования
 public static void SeedDb()
 {
     using (var session = Setup.SessionFactory.OpenSession())
         using (session.BeginTransaction()) {
             var user = session.Query <TestUser>().FirstOrDefault(u => u.Login == ServerFixture.DebugLogin());
             if (user != null)
             {
                 return;
             }
             SampleData.CreateUser(session, ServerFixture.DebugLogin());
             session.Transaction.Commit();
         }
 }
 public void Teardown()
 {
     if (restoreUser)
     {
         session.Flush();
         session.CreateSQLQuery("update Customers.Users set Login = Id;" +
                                "update Customers.Users set Login = :login where Id = :id")
         .SetParameter("login", ServerFixture.DebugLogin())
         .SetParameter("id", userId)
         .ExecuteUpdate();
     }
     else if (revertToDefaults)
     {
         var user = ServerUser();
         user.UseAdjustmentOrders = false;
     }
     session.Flush();
 }
        public void Sent_price_settings_changes()
        {
            restoreUser = true;

            SampleData.CreateUser(session, ServerFixture.DebugLogin());

            Run(new UpdateCommand());

            var price = localSession.Query <Price>().First(p => p.PositionCount > 0);

            Assert.That(price.Active, Is.True);
            Assert.That(price.PositionCount, Is.GreaterThan(0));
            price.Active = false;
            //данные хранятся с точностью до секунды, в тестах операция может быть выполнена за одну секунду тогда
            //команда будет думать что синхронизировать нечего
            localSession.Refresh(settings);
            settings.LastUpdate = settings.LastUpdate.Value.AddSeconds(-1);

            Run(new UpdateCommand());

            localSession.Refresh(price);
            var user = ServerUser();

            Assert.That(price.Active, Is.False, "прайс {0}, пользователь {1}", price.Id, user.Id);
            Assert.That(price.PositionCount, Is.EqualTo(0));
            var offersCount = localSession.Query <Offer>().Count(o => o.Price == price);

            Assert.That(offersCount, Is.EqualTo(0));

            var priceSettings = session
                                .CreateSQLQuery("select * from Customers.UserPrices" +
                                                " where UserId = :userId and PriceId = :priceId and RegionId = :regionId")
                                .SetParameter("userId", user.Id)
                                .SetParameter("priceId", price.Id.PriceId)
                                .SetParameter("regionId", price.Id.RegionId)
                                .List();

            Assert.That(priceSettings.Count, Is.EqualTo(0));
        }