public void WhenBrokerIsNotRunningExceptionIsThrown()
        {
            using (var context = CreateContext())
                using (var invalidator = new SqlDependencyInvalidator())
                {
                    context.SqlConnection.Open();

                    var disableCommand = new SqlCommand(@"ALTER DATABASE [" + TestDatabase.Name + "] SET DISABLE_BROKER WITH ROLLBACK IMMEDIATE", context.SqlConnection);
                    disableCommand.ExecuteNonQuery();

                    var exceptionWasThrown = false;
                    try
                    {
                        Assert.AreEqual(0, context.GetTable1().AsCached(invalidator).Count());
                    }
                    catch (LinqCacheException exception)
                    {
                        exceptionWasThrown = true;
                        Assert.AreEqual("The SQL Server Service Broker for the current database is not enabled.", exception.Message);
                    }

                    Assert.IsTrue(exceptionWasThrown);

                    var enableCommand = new SqlCommand(@"ALTER DATABASE [" + TestDatabase.Name + "] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE", context.SqlConnection);
                    enableCommand.ExecuteNonQuery();
                }
        }
        public void WhenUnderlyingDataIsChangedCacheIsRefreshed()
        {
            using (var context = CreateContext())
                using (var invalidator = new SqlDependencyInvalidator())
                {
                    Assert.AreEqual(0, context.GetTable1().AsCached(invalidator).ToList().Count);

                    context.AddIntoTable1(1, "Data");
                    context.SaveChanges();

                    invalidator.OnChangeReceived.WaitOne();

                    Assert.AreEqual(1, context.GetTable1().AsCached(invalidator).ToList().Count);
                }
        }
        public void WhenUnsupportedQueryIsExecutedUnsupportedQueryEventIsFired()
        {
            using (var context = CreateContext())
                using (var invalidator = new SqlDependencyInvalidator())
                {
                    bool unsupportedQueryFired = false;
                    invalidator.UnsupportedQuery += (sender, queryable) =>
                    {
                        unsupportedQueryFired = true;
                    };

                    context.GetTable1().GroupBy(row => row).Select(group => group).AsCached(invalidator).ToList();

                    invalidator.OnChangeReceived.WaitOne();

                    Assert.IsTrue(unsupportedQueryFired);
                }
        }