Exemple #1
0
        public ConventionResult IsSatisfiedBy(DatabaseSpecimen databaseSpecimen)
        {
            var script = GetScript();

            if (string.IsNullOrWhiteSpace(script))
            {
                throw new InvalidOperationException("Resource identified did not contain any SQL script.");
            }

            var failures = new List <string>();

            using (IDbConnection dbConnection = new SqlConnection(databaseSpecimen.ConnectionString))
            {
                dbConnection.Open();
                var command = dbConnection.CreateCommand();
                command.CommandText = script;

                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        failures.Add(reader.GetString(0));
                    }
                }
            }

            if (failures.Any())
            {
                return(ConventionResult.NotSatisfied(DatabaseConventionResultIdentifier,
                                                     FailureMessage + Environment.NewLine +
                                                     failures.Aggregate((x, y) => x + Environment.NewLine + y)));
            }

            return(ConventionResult.Satisfied(DatabaseConventionResultIdentifier));
        }
        public ConventionResult IsSatisfiedBy(DatabaseSpecimen databaseSpecimen)
        {
            var resourceName = GetType().FullName + ".sql";

            var assembly =
                GetType().Assembly.GetManifestResourceNames().Contains(resourceName) ?
                GetType().Assembly : typeof(DatabaseConventionSpecification).Assembly;

            string script;

            using (var stream = assembly.GetManifestResourceStream(resourceName))
                using (var reader = new StreamReader(stream))
                {
                    script = reader.ReadToEnd();
                }

            if (string.IsNullOrWhiteSpace(script))
            {
                throw new InvalidOperationException("Resource identified did not contain any SQL script.");
            }

            var failures = new List <string>();

            using (IDbConnection dbConnection = new SqlConnection(databaseSpecimen.ConnectionString))
            {
                dbConnection.Open();
                var command = dbConnection.CreateCommand();
                command.CommandText = script;

                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        failures.Add(reader.GetString(0));
                    }
                }
            }

            if (failures.Any())
            {
                return(ConventionResult.NotSatisfied(DatabaseConventionResultIdentifier,
                                                     FailureMessage + Environment.NewLine +
                                                     failures.Aggregate((x, y) => x + Environment.NewLine + y)));
            }

            return(ConventionResult.Satisfied(DatabaseConventionResultIdentifier));
        }
        public ConventionResult IsSatisfiedBy(DatabaseSpecimen databaseSpecimen)
        {
            var resourceName = GetType().FullName + ".sql";

            var assembly =
                GetType().Assembly.GetManifestResourceNames().Contains(resourceName) ?
                GetType().Assembly : typeof(DatabaseConventionSpecification).Assembly;

            string script; 
            using (var stream = assembly.GetManifestResourceStream(resourceName))
            using (var reader = new StreamReader(stream))
            {
                script = reader.ReadToEnd();
            }

            if (string.IsNullOrWhiteSpace(script))
            {
                throw new InvalidOperationException("Resource identified did not contain any SQL script.");
            }

            var failures = new List<string>();
            using (IDbConnection dbConnection = new SqlConnection(databaseSpecimen.ConnectionString))
            {
                dbConnection.Open();
                var command = dbConnection.CreateCommand();
                command.CommandText = script;

                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        failures.Add(reader.GetString(0));
                    }
                }
            }

            if (failures.Any())
            {
                return ConventionResult.NotSatisfied(DatabaseConventionResultIdentifier,
                    FailureMessage + Environment.NewLine +
                    failures.Aggregate((x, y) => x + Environment.NewLine + y));
            }

            return ConventionResult.Satisfied(DatabaseConventionResultIdentifier);
        }
Exemple #4
0
 public static ConventionResult MustConformTo(this DatabaseSpecimen databaseSpecimen, IDatabaseConventionSpecification databaseConventionSpecification)
 {
     return(databaseConventionSpecification.IsSatisfiedBy(databaseSpecimen));
 }