コード例 #1
0
        private void AddAndApplyMigrationImpl(
            string targetProjectName,
            string contextName,
            string migrationName,
            string startupProjectName = null)
        {
            var targetProject  = Path.Combine(_fixture.TestProjectRoot, targetProjectName, "project.json");
            var startupProject = startupProjectName != null
                ? Path.Combine(_fixture.TestProjectRoot, startupProjectName, "project.json")
                : null;

            _output.WriteLine("Target dir = " + targetProject);

            var migrationDir = Path.Combine(Path.GetDirectoryName(targetProject), "Migrations");
            var snapshotFile = contextName + "ModelSnapshot.cs";

            if (Directory.Exists(migrationDir))
            {
                Assert.False(Directory.EnumerateFiles(migrationDir, snapshotFile, SearchOption.AllDirectories).Any());
            }

            AssertCommand.Pass(new AddMigration(targetProject, migrationName, _output, startupProject)
                               .Execute("--context", contextName));

            Assert.True(Directory.EnumerateFiles(migrationDir, snapshotFile, SearchOption.AllDirectories).Any());

            AssertCommand.Pass(new DatabaseUpdate(targetProject, _output, startupProject)
                               .Execute("--context", contextName));

            AssertCommand.Pass(new ScriptMigration(targetProject, _output, startupProject)
                               .Execute("--context", contextName,
                                        "--output", Path.Combine(Path.GetDirectoryName(targetProject), "obj/dotnet-ef/migrations-" + contextName + ".sql")));
        }
コード例 #2
0
 public DotNetEfFixture()
 {
     foreach (var file in Directory.EnumerateFiles(TestProjectRoot, "project.json.ignore", SearchOption.AllDirectories))
     {
         File.Move(file, Path.Combine(Path.GetDirectoryName(file), "project.json"));
     }
     Console.WriteLine("Restoring test projects...".Bold().Black());
     AssertCommand.Pass(new DotnetRestore(TestProjectRoot, null).Execute());
     Console.WriteLine("Restore done.".Bold().Black());
 }
        public void Unsupported_MigrationsOnNetStandardClassLibrary()
        {
            var targetProject = Path.Combine(_fixture.TestProjectRoot, "NetStandardClassLibrary/project.json");

            var result = new AddMigration(targetProject, "Initial", _output)
                         .ExecuteWithCapturedOutput();

            AssertCommand.Fail(result);
            Assert.Contains(string.Format(ToolsDotNetStrings.ClassLibrariesNotSupported, "NetStandardClassLibrary"), result.StdErr);
        }
コード例 #4
0
        public void ShowsErrorWhenMissingDesignDependency()
        {
            var targetProject = Path.Combine(_fixture.TestProjectRoot, "MissingDesignDependency/project.json");

            var result = new AddMigration(targetProject, "Initial", _output)
                         .ExecuteWithCapturedOutput();

            AssertCommand.Fail(result);
            Assert.Contains(ToolsStrings.DesignDependencyNotFound, result.StdErr);
        }
コード例 #5
0
        public void AddMigrationToDifferentFolder()
        {
            var project = Path.Combine(_fixture.TestProjectRoot, "PortableApp", "project.json");

            Assert.False(Directory.Exists(Path.Combine(_fixture.TestProjectRoot, "SomeOtherDir")));

            AssertCommand.Pass(new AddMigration(project, "OtherFolderMigration", _output)
                               .Execute("--context", "TestContext", "--output-dir", "../SomeOtherDir"));

            Assert.True(Directory.Exists(Path.Combine(_fixture.TestProjectRoot, "SomeOtherDir")));
            Assert.True(Directory.EnumerateFiles(Path.Combine(_fixture.TestProjectRoot, "SomeOtherDir"), "*.cs").Any());
        }