public void IsApplied_ReturnsFalseIfNotCommitted()
        {
            var sut = new InMemoryMigrationLog();

            sut.Commit(new B1Migration());
            Assert.False(sut.IsCommited(typeof(BA1Migration)));
        }
        public void Commit_SameTypeTwice_OnlyAddOnce()
        {
            var sut = new InMemoryMigrationLog();

            sut.Commit(new BA1Migration());
            sut.Commit(new BA1Migration());
            var result = sut.GetCommitted();

            Assert.Single(result);
            Assert.Contains(typeof(BA1Migration), result);
        }
        public void GetCommitted_GetsAllPreviouslyCommittedMigrations()
        {
            var sut = new InMemoryMigrationLog();

            sut.Commit(new BA1Migration());
            sut.Commit(new B1Migration());
            var result = sut.GetCommitted();

            Assert.Equal(2, result.Count());
            Assert.Contains(typeof(BA1Migration), result);
            Assert.Contains(typeof(B1Migration), result);
        }
        public void DoNotCommitAttribute()
        {
            var log        = new InMemoryMigrationLog();
            var logFactory = Substitute.For <IMigrationLogFactory>();

            logFactory.Create().ReturnsForAnyArgs(log);

            var sut = new MigrationService(new DefaultMigrationLocator(), logFactory, GetMigrationFactorySubstitute());

            sut.Apply <DoNotCommitMigration>();

            Assert.False(log.IsCommited(typeof(DoNotCommitMigration)));
        }
        public void Apply_CommitUncommitedMigrations()
        {
            var log        = new InMemoryMigrationLog();
            var logFactory = Substitute.For <IMigrationLogFactory>();

            logFactory.Create().ReturnsForAnyArgs(log);

            var sut = new MigrationService(new DefaultMigrationLocator(), logFactory, GetMigrationFactorySubstitute());

            sut.Apply <BAMigration>();

            Assert.True(log.IsCommited(typeof(BA1Migration)));
        }
        public void CallsMigrationFactory()
        {
            var log        = new InMemoryMigrationLog();
            var logFactory = Substitute.For <IMigrationLogFactory>();

            logFactory.Create().ReturnsForAnyArgs(log);
            var migrationFactory = GetMigrationFactorySubstitute();

            var sut = new MigrationService(new DefaultMigrationLocator(), logFactory, migrationFactory);

            sut.Apply <B1Migration>();

            migrationFactory.Received().Create(Arg.Any <IEnumerable <Type> >());
        }
        public void Apply_SkipAlreadyCommittedMigrations()
        {
            var log        = new InMemoryMigrationLog();
            var logFactory = Substitute.For <IMigrationLogFactory>();

            logFactory.Create().ReturnsForAnyArgs(log);

            log.Commit(new B1Migration());

            var sut = new MigrationService(new DefaultMigrationLocator(), logFactory, GetMigrationFactorySubstitute());

            sut.Apply <BAMigration>();

            Assert.Equal(2, SystemState.SomeValue);
        }