示例#1
0
        public async void Async_methods_delegate_to_configured_store_creator()
        {
            var model             = Mock.Of <IModel>();
            var cancellationToken = new CancellationTokenSource().Token;

            var creatorMock = new Mock <RelationalDataStoreCreator>();

            creatorMock.Setup(m => m.ExistsAsync(cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.HasTablesAsync(cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.EnsureCreatedAsync(model, cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.EnsureDeletedAsync(model, cancellationToken)).Returns(Task.FromResult(true));

            var configurationMock = new Mock <DbContextConfiguration>();
            var connectionMock    = new Mock <RelationalConnection>();
            var dbConnectionMock  = new Mock <DbConnection>();

            configurationMock.Setup(m => m.DataStoreCreator).Returns(creatorMock.Object);
            configurationMock.Setup(m => m.Model).Returns(model);
            configurationMock.Setup(m => m.Connection).Returns(connectionMock.Object);
            configurationMock.Setup(m => m.LoggerFactory).Returns(new LoggerFactory());
            connectionMock.SetupGet(m => m.DbConnection).Returns(dbConnectionMock.Object);
            dbConnectionMock.SetupGet(m => m.Database).Returns("MyDb");

            var database = new RelationalDatabase(configurationMock.Object);

            Assert.True(await database.ExistsAsync(cancellationToken));
            creatorMock.Verify(m => m.ExistsAsync(cancellationToken), Times.Once);

            await database.CreateAsync(cancellationToken);

            creatorMock.Verify(m => m.CreateAsync(cancellationToken), Times.Once);

            await database.CreateTablesAsync(cancellationToken);

            creatorMock.Verify(m => m.CreateTablesAsync(model, cancellationToken), Times.Once);

            Assert.True(await database.HasTablesAsync(cancellationToken));
            creatorMock.Verify(m => m.HasTablesAsync(cancellationToken), Times.Once);

            await database.DeleteAsync(cancellationToken);

            creatorMock.Verify(m => m.DeleteAsync(cancellationToken), Times.Once);

            Assert.True(await database.EnsureCreatedAsync(cancellationToken));
            creatorMock.Verify(m => m.EnsureCreatedAsync(model, cancellationToken), Times.Once);

            Assert.True(await database.EnsureDeletedAsync(cancellationToken));
            creatorMock.Verify(m => m.EnsureDeletedAsync(model, cancellationToken), Times.Once);
        }
        public async void Async_methods_delegate_to_configured_store_creator()
        {
            var model = Mock.Of<IModel>();
            var cancellationToken = new CancellationTokenSource().Token;

            var creatorMock = new Mock<RelationalDataStoreCreator>();
            creatorMock.Setup(m => m.ExistsAsync(cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.HasTablesAsync(cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.EnsureCreatedAsync(model, cancellationToken)).Returns(Task.FromResult(true));
            creatorMock.Setup(m => m.EnsureDeletedAsync(model, cancellationToken)).Returns(Task.FromResult(true));

            var configurationMock = new Mock<DbContextConfiguration>();
            configurationMock.Setup(m => m.DataStoreCreator).Returns(creatorMock.Object);
            configurationMock.Setup(m => m.Model).Returns(model);

            var database = new RelationalDatabase(configurationMock.Object);

            Assert.True(await database.ExistsAsync(cancellationToken));
            creatorMock.Verify(m => m.ExistsAsync(cancellationToken), Times.Once);

            await database.CreateAsync(cancellationToken);
            creatorMock.Verify(m => m.CreateAsync(cancellationToken), Times.Once);

            await database.CreateTablesAsync(cancellationToken);
            creatorMock.Verify(m => m.CreateTablesAsync(model, cancellationToken), Times.Once);

            Assert.True(await database.HasTablesAsync(cancellationToken));
            creatorMock.Verify(m => m.HasTablesAsync(cancellationToken), Times.Once);

            await database.DeleteAsync(cancellationToken);
            creatorMock.Verify(m => m.DeleteAsync(cancellationToken), Times.Once);

            Assert.True(await database.EnsureCreatedAsync(cancellationToken));
            creatorMock.Verify(m => m.EnsureCreatedAsync(model, cancellationToken), Times.Once);

            Assert.True(await database.EnsureDeletedAsync(cancellationToken));
            creatorMock.Verify(m => m.EnsureDeletedAsync(model, cancellationToken), Times.Once);
        }