示例#1
0
        public void UpdateUpdates(MockPoco input)
        {
            // Arrange
            const string          expected     = "newValue1";
            var                   testSettings = new TestProjectSettings();
            DbContext             testContext  = null;
            Repository <MockPoco> tested       = null;

            try
            {
                testContext = new MockPocoContext(testSettings);
                tested      = new Repository <MockPoco>(testContext);
                testContext.Database.EnsureCreated();
                testContext.Add(input);
                testContext.SaveChanges();

                // Act

                input.Value = expected;
                testContext.SaveChanges();

                // Assert

                Assert.Equal(input.Value, testContext.Set <MockPoco>().First().Value);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#2
0
        public void AddRangeAddsRange(List <MockPoco> input)
        {
            // Arrange

            var testSettings = new TestProjectSettings();

            DbContext             testContext = null;
            Repository <MockPoco> tested      = null;

            try
            {
                testContext = new MockPocoContext(testSettings);
                tested      = new Repository <MockPoco>(testContext);
                testContext.Database.EnsureCreated();

                // Act

                testContext.AddRange(input);
                testContext.SaveChanges();

                // Assert

                Assert.Equal(input.Count, testContext.Set <MockPoco>().Count());
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#3
0
        public void CountReturnsAccurateCount(List <MockPoco> input)
        {
            // Arrange

            var                   testSettings = new TestProjectSettings();
            var                   inputList    = input.ToList();
            DbContext             testContext  = null;
            Repository <MockPoco> tested       = null;

            var expected = input.Count;

            try
            {
                testContext = new MockPocoContext(testSettings);
                tested      = new Repository <MockPoco>(testContext);
                testContext.Database.EnsureCreated();

                testContext.AddRange(inputList);
                testContext.SaveChanges();

                // Act

                var actual = tested.Count();

                // Assert

                Assert.Equal(expected, actual);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#4
0
        public void PredicateGetAllReturnsAccurateResult(List <MockPoco> input)
        {
            // Arrange

            var                   testSettings = new TestProjectSettings();
            var                   inputList    = input.ToList();
            DbContext             testContext  = null;
            Repository <MockPoco> tested       = null;
            var                   predicate    = new Func <MockPoco, bool>(x => x.Value == "test3");
            var                   expected     = input.Where(predicate);

            try
            {
                testContext = new MockPocoContext(testSettings);
                tested      = new Repository <MockPoco>(testContext);
                testContext.Database.EnsureCreated();

                testContext.AddRange(inputList);
                testContext.SaveChanges();

                // Act

                var actual = tested.GetAll(x => predicate(x));

                // Assert

                Assert.Equal(expected, actual);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#5
0
        public void AddStock(Company company)
        {
            // Arrange
            var                  testSettings = new TestProjectSettings();
            StockContext         testContext  = null;
            Repository <Company> tested       = null;

            try
            {
                testContext = new StockContext(testSettings);
                testContext.Database.EnsureCreated();
                tested = new Repository <Company>(testContext);
                testContext.Add(company);
                var changesCount = testContext.SaveChanges();

                // Act

                var actual   = testContext.Set <Company>().Count();
                var expected = 1;

                // Assert

                Assert.Equal(expected, actual);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#6
0
        public void RemoveSpecificStockThrowsWhenNull()
        {
            // Arrange

            var testSettings = new TestProjectSettings();

            StockContext         testContext = null;
            Repository <Company> tested      = null;

            try
            {
                testContext = new StockContext(testSettings);
                testContext.Database.EnsureCreated();
                tested = new Repository <Company>(testContext);

                // Act & Assert

                Assert.Throws <ArgumentNullException>(() => tested.Remove(null));
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#7
0
        public void UnitOfWorkCommits(Company input)
        {
            // Arrange

            var testSettings = new TestProjectSettings();

            DbContext       testContext = null;
            StockUnitOfWork tested      = null;

            try
            {
                testContext = new StockContext(testSettings);
                testContext.Database.EnsureCreated();
                tested = new StockUnitOfWork(testContext);

                // Act

                tested.StockRepository.Add(input);
                tested.Complete();

                var expected = 1;
                var actual   = tested.StockRepository.Count();

                // Assert

                Assert.Equal(expected, actual);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#8
0
        public void UnitOfWorkDoNotShowAsExisitngWithoutCommit(Company input)
        {
            // Arrange

            var testSettings = new TestProjectSettings();

            DbContext       testContext = null;
            StockUnitOfWork tested      = null;

            try
            {
                testContext = new StockContext(testSettings);
                testContext.Database.EnsureCreated();
                tested = new StockUnitOfWork(testContext);

                // Act

                tested.StockRepository.Add(input);

                var expected = 0;
                var actual   = tested.StockRepository.GetAll().ToList().Count;

                // Assert


                Assert.Equal(expected, actual);
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#9
0
        public void AddAdds(Company input)
        {
            // Arrange
            var testSettings = new TestProjectSettings();

            DbContext            testContext = null;
            StockQuoteRepository tested      = null;

            try
            {
                testContext = new StockTestContext(testSettings);
                tested      = new StockQuoteRepository(testContext);
                testContext.Database.EnsureCreated();

                // Act

                testContext.Add(input.FirstQuote);
                testContext.SaveChanges();

                // Assert

                Assert.Equal(input.FirstQuote, testContext.Set <StockQuote>().First());
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#10
0
        public void GetTradingDatesGetsOnlyTradingDatesInOpenRangeOrderedAscending(List <Company> input)
        {
            // Arrange
            var testSettings = new TestProjectSettings();

            DbContext            testContext = null;
            StockQuoteRepository tested      = null;

            try
            {
                testContext = new StockTestContext(testSettings);
                tested      = new StockQuoteRepository(testContext);
                testContext.Database.EnsureCreated();
                testContext.AddRange(input.SelectMany(x => x.Quotes));
                testContext.SaveChanges();

                // Act
                var result = tested.GetTradingDates(new DateTime(2017, 01, 01), new DateTime(2018, 01, 01));

                // Assert

                Assert.Equal(250, result.Count);
                for (var i = 1; i < result.Count; i++)
                {
                    Assert.True(result[i] > result[i - 1]);
                }
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#11
0
        public void GetAllQuotesFromPreviousSessionGetsOnlyQuotesFromLastSession(List <Company> input)
        {
            // Arrange
            var testSettings = new TestProjectSettings();

            DbContext            testContext = null;
            StockQuoteRepository tested      = null;

            try
            {
                testContext = new StockTestContext(testSettings);
                tested      = new StockQuoteRepository(testContext);
                testContext.Database.EnsureCreated();
                testContext.AddRange(input.SelectMany(x => x.Quotes));
                testContext.SaveChanges();
                var date = new DateTime(2017, 01, 01);
                // Act
                var result = tested.GetAllQuotesFromPreviousSession(date);

                // Assert

                Assert.Equal(3, result.Count);
                foreach (var quote in result)
                {
                    Assert.Equal(new DateTime(2016, 12, 30), quote.DateParsed);
                }
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#12
0
        public void GetNTradingDatesGetsOnlyTradingDatesFromLastNSessionsOrderedDescending(List <Company> input)
        {
            // Arrange
            var testSettings = new TestProjectSettings();

            DbContext            testContext = null;
            StockQuoteRepository tested      = null;

            try
            {
                testContext = new StockTestContext(testSettings);
                tested      = new StockQuoteRepository(testContext);
                testContext.Database.EnsureCreated();
                testContext.AddRange(input.Where(x => x.Ticker == "MBANK").SelectMany(x => x.Quotes));
                testContext.SaveChanges();

                // Act
                var result = tested.GetAllQuotesFromPreviousNDays(new DateTime(2017, 01, 01), 10);

                // Assert

                Assert.Equal(10, result.Count);
                for (var i = 1; i < result.Count; i++)
                {
                    Assert.True(result[i].DateParsed > result[i - 1].DateParsed);
                }
            }
            finally
            {
                testContext?.Database.EnsureDeleted();
                tested?.Dispose();
                testContext?.Dispose();
            }
        }
示例#13
0
        public void FactoryProvidesNewInstanceEverytimeItsCalled()
        {
            // Arrange

            var                    testSettings = new TestProjectSettings();
            StockContext           testContext  = null;
            StockUnitOfWorkFactory ufo          = null;
            StockUnitOfWork        uow          = null;
            StockUnitOfWork        uow2         = null;

            try
            {
                testContext = new StockContext(testSettings);
                ufo         = new StockUnitOfWorkFactory(testContext);

                // Act

                uow  = ufo.GetInstance();
                uow2 = ufo.GetInstance();

                // Assert

                Assert.NotEqual(uow, uow2);
            }
            finally
            {
                testContext?.Dispose();
                ufo?.Dispose();
                uow?.Dispose();
            }
        }
示例#14
0
        public void FactoryDisposes()
        {
            // Arrange

            var testSettings = new TestProjectSettings();

            var testContext = new StockContext(testSettings);
            var ufo         = new StockUnitOfWorkFactory(testContext);
            var uow         = ufo.GetInstance();

            ufo.Dispose();

            // Act & Assert

            Assert.Throws <ObjectDisposedException>(() => ufo.GetInstance());
            Assert.Throws <ObjectDisposedException>(() => uow.Complete());
            Assert.Throws <ObjectDisposedException>(() => testContext.Company.Find(1));
        }
示例#15
0
        public async Task GetLatestSessionInDbDateReturnsLastSessionDateInDb(List <Company> input)
        {
            // Arrange
            var testSettings = new TestProjectSettings();

            DbContext            testContext = null;
            StockQuoteRepository tested      = null;

            try
            {
                testContext = new StockTestContext(testSettings);
                tested      = new StockQuoteRepository(testContext);
                await testContext.Database.EnsureCreatedAsync();

                await testContext.AddRangeAsync(input.SelectMany(x => x.Quotes));

                await testContext.SaveChangesAsync();

                var date = new DateTime(2018, 02, 09);

                // Act
                var result = await tested.GetLatestSessionInDbDateAsync();

                // Assert

                Assert.Equal(date.Date, result.Date);
            }
            finally
            {
                if (testContext != null)
                {
                    await testContext.Database.EnsureDeletedAsync();

                    if (tested != null)
                    {
                        await tested.DisposeAsync();
                    }
                    await testContext.DisposeAsync();
                }
            }
        }