void PerformDatabaseChecks(AppDependencyTestResult result)
 {
     PerformCriticalChecks(result);
     if (!result.IsApplicationViableForMaintenance)
     {
         return;
     }
     PerformMaintenanceChecks(result);
 }
        void PerformMaintenanceChecks(AppDependencyTestResult result)
        {
            result.DatabaseRequiresUpgrade = !databaseTester.IsDatabaseFullyUpgraded();

            if (result.DatabaseRequiresUpgrade)
            {
                logger.Error("The application database requires upgrades");
                result.IsApplicationOKToUse = false;
            }
        }
        public AppDependencyTestResult TestApplicationDependencies()
        {
            var result = new AppDependencyTestResult {
                IsApplicationViableForMaintenance = true,
                IsApplicationOKToUse = true
            };

            PerformDatabaseChecks(result);

            return(result);
        }
        void PerformCriticalChecks(AppDependencyTestResult result)
        {
            result.ConnectionStringIsMissing = !databaseTester.IsConnectionStringAvailable();
            result.CannotConnectToDatabase   = !databaseTester.IsDatabaseConnectionPossible();

            if (result.ConnectionStringIsMissing)
            {
                logger.Fatal("The application connection string is missing");
                result.IsApplicationViableForMaintenance = false;
                result.IsApplicationOKToUse = false;
            }

            if (result.CannotConnectToDatabase)
            {
                logger.Fatal("Cannot connect to the application database");
                result.IsApplicationViableForMaintenance = false;
                result.IsApplicationOKToUse = false;
            }
        }