public void WithDbEntity_When_Called_Given_That_Already_Set_Throws_InvalidOperationException()
        {
            // Arrange
            EntityFrameworkDestinationBuilder entityFrameworkDestinationBuilder = new EntityFrameworkDestinationBuilder(new Mock <ILogGroupDestinationsBuilder>().Object);

            entityFrameworkDestinationBuilder.WithDbEntity(new Mock <IDbEntityBuilder>().Object);

            Assert.Catch <InvalidOperationException>(() =>
            {
                // Act
                entityFrameworkDestinationBuilder.WithDbEntity(new Mock <IDbEntityBuilder>().Object);
            });
        }
        public void Add_When_Called_Creates_New_Destination_Sends_It_To_CustomDestination_Method_And_Returns_Its_Result()
        {
            // Arrange
            // Creating the destination builder.
            var logGroupDestinationsBuilderMock = new Mock <ILogGroupDestinationsBuilder>();

            logGroupDestinationsBuilderMock.Setup(x => x.CustomDestination(It.IsAny <ILogDestination>())).Returns(logGroupDestinationsBuilderMock.Object);
            EntityFrameworkDestinationBuilder entityFrameworkDestinationBuilder = new EntityFrameworkDestinationBuilder(logGroupDestinationsBuilderMock.Object);
            // Adding context provider.
            var dbContextProvider = new Mock <IDbContextProvider>().Object;

            entityFrameworkDestinationBuilder.WithDbContext(dbContextProvider);
            // Adding entity builder.
            var dbEntityBuilder = new Mock <IDbEntityBuilder>().Object;

            entityFrameworkDestinationBuilder.WithDbEntity(dbEntityBuilder);

            // Act
            var returned = entityFrameworkDestinationBuilder.Add();

            // Arrange
            logGroupDestinationsBuilderMock.Verify(x => x.CustomDestination(It.Is <EntityFrameworkDestination>(d => d.ContextProvider == dbContextProvider &&
                                                                                                               d.EntityBuilder == dbEntityBuilder)));
            Assert.AreEqual(logGroupDestinationsBuilderMock.Object, returned);
        }
        public void WithDbEntity_When_Called_With_Null_DbEntityBuilder_Throws_ArgumentNullException()
        {
            // Arrange
            EntityFrameworkDestinationBuilder entityFrameworkDestinationBuilder = new EntityFrameworkDestinationBuilder(new Mock <ILogGroupDestinationsBuilder>().Object);

            Assert.Catch <ArgumentNullException>(() =>
            {
                // Act
                entityFrameworkDestinationBuilder.WithDbEntity(null as IDbEntityBuilder);
            });
        }
        public void WithDbEntity_When_Called_Sets_DbEntityBuilder()
        {
            // Arrange
            EntityFrameworkDestinationBuilder entityFrameworkDestinationBuilder = new EntityFrameworkDestinationBuilder(new Mock <ILogGroupDestinationsBuilder>().Object);
            var dbEntityBuilder = new Mock <IDbEntityBuilder>().Object;

            // Act
            entityFrameworkDestinationBuilder.WithDbEntity(dbEntityBuilder);

            // Assert
            Assert.AreEqual(dbEntityBuilder, entityFrameworkDestinationBuilder.DbEntityBuilder);
        }
        public void Add_When_Called_Given_That_DbContextProvider_Was_Not_Set_During_The_Build_Throws_InvalidOperationException()
        {
            // Arrange
            // Creating the destination builder.
            EntityFrameworkDestinationBuilder entityFrameworkDestinationBuilder = new EntityFrameworkDestinationBuilder(new Mock <ILogGroupDestinationsBuilder>().Object);

            // Adding entity builder.
            entityFrameworkDestinationBuilder.WithDbEntity(new Mock <IDbEntityBuilder>().Object);

            Assert.Catch <InvalidOperationException>(() =>
            {
                // Act
                entityFrameworkDestinationBuilder.Add();
            });
        }