public void InvokeCommand_Builder_To_Entity_Conversion_Throws_When_Builder_Could_Not_Be_Constructed() { // Arrange var builderProviderMock = new Mock <IDatabaseCommandEntityProvider <TestEntity, TestEntityBuilder> >(); var builderSut = new DatabaseCommandProcessor <TestEntity, TestEntityBuilder>(Connection, builderProviderMock.Object); var entity = new TestEntity("A", "B", "C", true); // Act & Assert builderSut.Invoking(x => x.ExecuteCommand(new Mock <IDatabaseCommand>().Object, entity)) .Should().Throw <InvalidOperationException>() .WithMessage("Builder instance was not constructed, create builder delegate should deliver an instance"); }
public void InvokeCommand_Entity_To_Builder_Conversion_Throws_When_Entity_Could_Not_Be_Constructed() { // Arrange var builderProviderMock = new Mock <IDatabaseCommandEntityProvider <TestEntity, TestEntityBuilder> >(); builderProviderMock.SetupGet(x => x.CreateBuilderDelegate) .Returns(new Func <TestEntity, TestEntityBuilder>(entity => new TestEntityBuilder(entity))); var command = new SqlDatabaseCommand("INSERT INTO ...", DatabaseCommandType.Text, DatabaseOperation.Insert); var builderSut = new DatabaseCommandProcessor <TestEntity, TestEntityBuilder>(Connection, builderProviderMock.Object); var entity = new TestEntity("A", "B", "C", true); // Act & Assert builderSut.Invoking(x => x.ExecuteCommand(command, entity)) .Should().Throw <InvalidOperationException>() .WithMessage("Could not cast type [CrossCutting.Data.Sql.Tests.Repositories.TestEntityBuilder] to [CrossCutting.Data.Sql.Tests.Repositories.TestEntity]"); }
public void InvokeCommand_Works_With_Builder_To_Entity_Conversion_When_Conversion_Succeeds() { // Arrange Connection.AddResultForNonQueryCommand(12345); //using ExecuteNonQuery flow, need to give valid result var builderProviderMock = new Mock <IDatabaseCommandEntityProvider <TestEntity, TestEntityBuilder> >(); builderProviderMock.SetupGet(x => x.CreateBuilderDelegate) .Returns(new Func <TestEntity, TestEntityBuilder>(entity => new TestEntityBuilder(entity))); var command = new SqlDatabaseCommand("INSERT INTO ...", DatabaseCommandType.Text, DatabaseOperation.Insert); builderProviderMock.SetupGet(x => x.CreateEntityDelegate) .Returns(x => x.Build()); var builderSut = new DatabaseCommandProcessor <TestEntity, TestEntityBuilder>(Connection, builderProviderMock.Object); var entity = new TestEntity("A", "B", "C", true); // Act var actual = builderSut.ExecuteCommand(command, entity).HandleResult("Something went wrong"); // Assert actual.Code.Should().Be(entity.Code); actual.CodeType.Should().Be(entity.CodeType); actual.Description.Should().Be(entity.Description); actual.IsExistingEntity.Should().Be(entity.IsExistingEntity); }
public DatabaseCommandProcessorTests() { Connection = new DbConnection(); ProviderMock = new Mock <IDatabaseCommandEntityProvider <MyEntity> >(); Sut = new DatabaseCommandProcessor <MyEntity>(Connection, ProviderMock.Object); }