public void Ctor_Taking_Factory_Method_When_Called_With_Null_Factory_Method_Throws_ArgumentNullException()
 {
     Assert.Catch <ArgumentNullException>(() =>
     {
         // Act
         FactoryMethodDbContextProvider factoryMethodDbContextProvider = new FactoryMethodDbContextProvider(null as LogModelFunc <DbContext>);
     });
 }
        public void Ctor_Taking_Factory_Method_When_Called_Sets_Factory_Method()
        {
            // Arrange
            LogModelFunc <DbContext> factoryMethod = d => null;

            // Act
            FactoryMethodDbContextProvider factoryMethodDbContextProvider = new FactoryMethodDbContextProvider(factoryMethod);

            // Assert
            Assert.AreEqual(factoryMethod, factoryMethodDbContextProvider.FactoryMethod);
        }
        public void GetDbContext_Taking_LogModel_When_Called_Returns_Result_From_Factory_Method()
        {
            // Arrange
            DbContext contextReturnedFromFactoryMethod   = new Mock <DbContext>().Object;
            LogModelFunc <DbContext>       factoryMethod = d => contextReturnedFromFactoryMethod;
            FactoryMethodDbContextProvider factoryMethodDbContextProvider = new FactoryMethodDbContextProvider(factoryMethod);

            // Act
            var contextFromMethod = factoryMethodDbContextProvider.GetDbContext(new LogModel());

            // Assert
            Assert.AreEqual(contextReturnedFromFactoryMethod, contextFromMethod);
        }
        public void Adding_Entity_Framework_Destination_With_DbContext_Function()
        {
            IDbContextProvider factoryMethodDbContextProvider = new FactoryMethodDbContextProvider((logModel) =>
            {
                if (logModel.HasTag("App1"))
                {
                    return(dbContext1);
                }
                else
                {
                    return(dbContext2);
                }
            });
            IDbEntityBuilder           dbEntityBuilder            = new LogDbModelEntityBuilder();
            EntityFrameworkDestination entityFrameworkDestination = new EntityFrameworkDestination(factoryMethodDbContextProvider, dbEntityBuilder);

            Logger logger = new Logger();

            logger.AddLogDestinations(entityFrameworkDestination);
        }