public void Should_Read_Zero_Names_From_Db_Metadata_File()
        {
            using (var tempFile = new TempFile(".xml"))
            {
                tempFile.WriteAllText(BogusDbMetadataFile);
                var reader = new ModelMetadataReader();
                var names  = reader.ReadNames(tempFile.Filename).ToList();

                Assert.True(names.Count == 0);
            }
        }
        public void Should_Fail_To_Read_Bogus_Db_Metadata_File()
        {
            using (var tempFile = new TempFile(".xml"))
            {
                tempFile.WriteAllText(BogusXmlFile);
                var reader = new ModelMetadataReader();

                var readNames = new Func <List <string> >(() =>
                                                          reader.ReadNames(tempFile.Filename).ToList());

                Assert.Throws <XmlException>(readNames);
            }
        }
        public void Should_Read_Names_From_Db_Metadata_File()
        {
            using (var tempFile = new TempFile(".xml"))
            {
                string buffer = Encoding.UTF8.GetString(
                    ManifestResourceStream.Get(
                        Assembly.GetExecutingAssembly(), AssetsConstants.StandardDbMetadataFile));

                tempFile.WriteAllText(buffer);
                var reader = new ModelMetadataReader();
                var names  = reader.ReadNames(tempFile.Filename).ToList();

                Assert.True(names.Count == 2);

                names[0].Should().Be("Products");
                names[1].Should().Be("Categories");
            }
        }
Esempio n. 4
0
        private static ExitCode ProcessCommandLineArgs(string[] args)
        {
            var commandContext             = new CommandContext();
            var outputWriter               = new OutputWriter();
            var sqlClientConnectionFactory = new SqlClientConnectionFactory();
            var sqlClientSchemaReader      = new SqlClientSchemaReader(sqlClientConnectionFactory, outputWriter);
            var assemblyReader             = new DotnetAssemblyReader(outputWriter);
            var assemblyMetadataWriter     = new DotnetAssemblyMetadataWriter(outputWriter);
            var dbModelMetadataReader      = new ModelMetadataReader();
            var dbModelMetadataWriter      = new DbModelMetadataWriter(outputWriter);
            var transformer      = new Transformer(outputWriter);
            var directoryWrapper = new DirectoryWrapper();
            var fileWrapper      = new FileWrapper();

            var factory = new CommandFactory(
                sqlClientSchemaReader,
                assemblyReader,
                dbModelMetadataWriter,
                assemblyMetadataWriter,
                dbModelMetadataReader,
                transformer,
                outputWriter,
                directoryWrapper,
                fileWrapper,
                commandContext);

            ICommand command  = null;
            int      argIndex = 0;

            for (; argIndex < args.Length; argIndex++)
            {
                if (IsValidArgument("h", "help", args[argIndex]) ||
                    IsValidArgument("?", args[argIndex]) ||
                    args[argIndex] == "?")
                {
                    return(factory.Create("help")
                           .Execute());
                }
                else if (IsValidArgument("nologo", args[argIndex]))
                {
                    commandContext.NoLogo = true;
                }
                else if (IsValidArgument("verbose", args[argIndex]))
                {
                    commandContext.VerboseLogging = true;
                    outputWriter.IsVerbose        = true;
                }
                else if (IsValidArgument("v", "version", args[argIndex]))
                {
                    return(factory.Create("version")
                           .Execute());
                }
                else if (args[argIndex].StartsWith("-", StringComparison.CurrentCultureIgnoreCase))
                {
                    outputWriter.Error.WriteLine($"Unknown startup option: {args[argIndex]}");
                    return(ExitCode.Error);
                }
                else
                {
                    string lastArg = args[argIndex];

                    if (string.IsNullOrEmpty(lastArg))
                    {
                        return(factory.Create("help")
                               .Execute());
                    }

                    List <string> commandArgs = (argIndex + 1) >= args.Length
                        ? new List <string>()
                        : args.Skip(argIndex + 1).ToList();

                    commandContext.CommandArgs = commandArgs;
                    PrintBanner(commandContext, outputWriter);
                    command = factory.Create(lastArg);
                    break;
                }
            }

            if (command == null)
            {
                command = factory.Create("help");
            }

            return(command.Execute());
        }