public void UpsertStockCommandHandler_EmptyDbUpsertList_ListSaved()
        {
            //given
            var stocks = new[]
            {
                new Stock {
                    Name = "test1"
                },
                new Stock {
                    Name = "test2"
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertStocksCommandHandler(repository);
            var command    = new UpsertStocksCommand(stocks);

            //when
            handler.Execute(command);

            //then
            var orderedStocksInDatabase = repository.Database.Query <Stock>().OrderBy(x => x.Id);

            Assert.Equal(stocks.OrderBy(x => x.Id), orderedStocksInDatabase);
        }
Beispiel #2
0
        public void TagQueryHandler_TagQueryNotEmptyDatabase_Array()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new TagQueryHandler(repository);
            var query      = new TagQuery();
            var tags       = new[]
            {
                new Tag {
                    Name = "tag1"
                },
                new Tag {
                    Name = "tag2"
                },
                new Tag {
                    Name = "tag3"
                },
                new Tag {
                    Name = "tag4"
                },
                new Tag {
                    Name = "tag5"
                },
            };

            repository.Database.UpsertBulk(tags);

            //when
            var result = handler.Execute(query);

            //then
            Assert.Equal(tags.OrderBy(x => x.Id), result.OrderBy(x => x.Id));
        }
Beispiel #3
0
        public void Query_NotEmptyDbFilter_FilteredArray()
        {
            //given
            var repo  = LiteDbHelper.CreateMemoryDb();
            var input = new[]
            {
                new Tag {
                    Name = "a"
                },
                new Tag {
                    Name = "b"
                },
                new Tag {
                    Name = "c"
                },
                new Tag(),
                new Tag(),
            };

            repo.Database.UpsertBulk(input);

            //when
            var result = repo.Database.Query <Tag>(x => !string.IsNullOrEmpty(x.Name));

            //then
            Assert.Equal(input.Where(x => !string.IsNullOrEmpty(x.Name)).OrderBy(x => x.Id), result.OrderBy(x => x.Id));
        }
        public void UpsertSearchStateCommandHandler_EmptyDbUpsertListOfNamedObjects_ListSaved()
        {
            //given
            var searchStates = new[]
            {
                new SearchState {
                    Name = "test1"
                },
                new SearchState {
                    Name = "test2"
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertSearchStateCommandHandler(repository);
            var command    = new UpsertSearchStateCommand(searchStates);

            //when
            handler.Execute(command);

            //then
            var orderedSearchStatesInDatabase = repository.Database.Query <SearchState>().OrderBy(x => x.Id);

            Assert.Equal(searchStates.OrderBy(x => x.Id), orderedSearchStatesInDatabase);
        }
Beispiel #5
0
        public void StockQueryHandler_StockQueryNotEmptyDatabase_Array()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new StockQueryHandler(repository);
            var query      = new StockQuery();
            var stocks     = new[]
            {
                new CashManager.Data.DTO.Stock(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1))
                {
                    Name        = "1",
                    IsUserStock = true,
                    Balance     = new Balance {
                        Value = 12.34m
                    }
                },
                new CashManager.Data.DTO.Stock(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2))
                {
                    Name        = "2",
                    IsUserStock = false
                }
            };

            repository.Database.GetCollection <CashManager.Data.DTO.Stock>().InsertBulk(stocks);

            //when
            var result = handler.Execute(query);

            //then
            Assert.Equal(stocks, result);
            Assert.Equal(stocks[0].Balance, result[0].Balance);
            Assert.Equal(stocks[0].Balance.Value, result[0].Balance.Value);
        }
        public void UpsertCategoriesCommandHandler_EmptyDbUpsertList_ListSaved()
        {
            //given
            var categories = new[]
            {
                new Category {
                    Name = "test1"
                },
                new Category {
                    Name = "test2"
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertCategoriesCommandHandler(repository);
            var command    = new UpsertCategoriesCommand(categories);

            //when
            handler.Execute(command);

            //then
            var orderedCategoryInDatabase = repository.Database.Query <Category>().OrderBy(x => x.Id);

            Assert.Equal(categories.OrderBy(x => x.Id), orderedCategoryInDatabase);
        }
        public void UpsertTransactionCommandHandler_EmptyDbUpsertList_ListSaved()
        {
            //given
            var transactionTypes = new[]
            {
                new TransactionType {
                    Name = "t1", Outcome = true
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertTransactionTypesCommandHandler(repository);
            var command    = new UpsertTransactionTypesCommand(transactionTypes);

            //when
            handler.Execute(command);

            //then
            var orderedTransactionTypesInDatabase = repository.Database.Query <TransactionType>().OrderBy(x => x.Id).ToArray();
            var orderedTransactionTypes           = transactionTypes.OrderBy(x => x.Id).ToArray();

            Assert.Equal(orderedTransactionTypes, orderedTransactionTypesInDatabase);
            Assert.Equal(orderedTransactionTypes.Select(x => x.Name), orderedTransactionTypesInDatabase.Select(x => x.Name));
            Assert.Equal(orderedTransactionTypes.Select(x => x.Id), orderedTransactionTypesInDatabase.Select(x => x.Id));
            Assert.Equal(orderedTransactionTypes.Select(x => x.IsDefault), orderedTransactionTypesInDatabase.Select(x => x.IsDefault));
            Assert.Equal(orderedTransactionTypes.Select(x => x.Income), orderedTransactionTypesInDatabase.Select(x => x.Income));
            Assert.Equal(orderedTransactionTypes.Select(x => x.Outcome), orderedTransactionTypesInDatabase.Select(x => x.Outcome));
        }
Beispiel #8
0
        public void UpsertTransactionCommandHandler_EmptyDbUpsertOneObject_ObjectSaved()
        {
            //given
            var transactions = new[]
            {
                new Transaction {
                    Notes = new List <string> {
                        "test1"
                    }, Positions = new List <Position> {
                        new Position {
                            Title = "p1"
                        }
                    }
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertTransactionsCommandHandler(repository);
            var command    = new UpsertTransactionsCommand(transactions);

            //when
            handler.Execute(command);

            //then
            var orderedTransactionsInDatabase = repository.Database.Query <Transaction>().OrderBy(x => x.Id);

            Assert.Equal(transactions.OrderBy(x => x.Id), orderedTransactionsInDatabase);
        }
        public void CategoryQueryHandler_CategoryQueryNotEmptyDatabase_Array()
        {
            //given
            var repository   = LiteDbHelper.CreateMemoryDb();
            var handler      = new CategoryQueryHandler(repository);
            var query        = new CategoryQuery();
            var rootCategory = new Category(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1))
            {
                Name   = "1",
                Parent = null
            };
            var categories = new[]
            {
                rootCategory,
                new Category(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2))
                {
                    Name   = "2",
                    Parent = rootCategory
                }
            };

            repository.Database.GetCollection <Category>().InsertBulk(categories);

            //when
            var result = handler.Execute(query);

            //then
            Assert.Equal(categories, result);
        }
Beispiel #10
0
        public void TransactionTypesQueryHandler_TransactionTypesQueryNotEmptyDatabaseWithQuery_MatchingArray()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new TransactionTypesQueryHandler(repository);
            Expression <Func <TransactionType, bool> > linqQuery = x => x.IsDefault && x.Outcome;
            var query        = new TransactionTypesQuery(linqQuery);
            var transactions = new[]
            {
                new TransactionType {
                    Income = true, IsDefault = true, Name = "income"
                },
                new TransactionType {
                    Outcome = true, IsDefault = true, Name = "outcome"
                },
            };

            repository.Database.GetCollection <TransactionType>().InsertBulk(transactions);
            var matchingTransactions = transactions.AsQueryable().Where(linqQuery).ToArray();

            //when
            var result = handler.Execute(query);

            //then
            Assert.Equal(matchingTransactions.Length, result.Length);
            Assert.Equal(matchingTransactions, result);
        }
Beispiel #11
0
        public void TransactionQueryHandler_TransactionQueryNotEmptyDatabaseWithQuery_MatchingArray()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new TransactionQueryHandler(repository);
            Expression <Func <Transaction, bool> > linqQuery = x => x.Title.Contains("1");
            var query        = new TransactionQuery(linqQuery);
            var transactions = new[]
            {
                new Transaction(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1))
                {
                    Title = "t1"
                },
                new Transaction(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2))
                {
                    Title = "t2"
                }
            };

            repository.Database.GetCollection <Transaction>().InsertBulk(transactions);
            var matchingTransactions = transactions.AsQueryable().Where(linqQuery).ToArray();

            //when
            var result = handler.Execute(query);

            //then
            Assert.Equal(matchingTransactions.Length, result.Length);
            Assert.Equal(matchingTransactions, result);
        }
        public void UpsertStockCommandHandler_EmptyDbUpsertOneObject_ObjectSaved()
        {
            //given
            var stocks = new[]
            {
                new Stock {
                    Name = "test1", Balance = new Balance {
                        Value = 12.45m
                    }
                }
            };

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertStocksCommandHandler(repository);
            var command    = new UpsertStocksCommand(stocks);

            //when
            handler.Execute(command);

            //then
            var orderedStocksInDatabase = repository.Database.Query <Stock>().OrderBy(x => x.Id).ToArray();

            Assert.Equal(stocks.OrderBy(x => x.Id), orderedStocksInDatabase);
            Assert.Equal(stocks[0].Balance, orderedStocksInDatabase[0].Balance);
            Assert.Equal(stocks[0].Balance.Value, orderedStocksInDatabase[0].Balance.Value);
        }
Beispiel #13
0
        public void Query_EmptyDb_Empty()
        {
            //given
            var repo = LiteDbHelper.CreateMemoryDb();

            //when
            var result = repo.Database.Query <Dto>();

            //then
            Assert.Empty(result);
        }
Beispiel #14
0
        public void Remove_Null_0()
        {
            //given
            var repo = LiteDbHelper.CreateMemoryDb();

            //when
            int result = repo.Database.Remove <Dto>(null);

            //then
            Assert.Equal(0, result);
        }
Beispiel #15
0
        public void UpsertBulk_Nulls_0()
        {
            //given
            var repo = LiteDbHelper.CreateMemoryDb();

            Dto[] input = { null, null, null };

            //when
            int result = repo.Database.UpsertBulk(input);

            //then
            Assert.Equal(0, result);
        }
Beispiel #16
0
        public void Upsert_NotNullNotInDbAlQuery_TrueAndObjectInDb()
        {
            //given
            var repo    = LiteDbHelper.CreateMemoryDb();
            var element = new Dto();

            //when
            bool result = repo.Database.Upsert(element);

            //then
            Assert.True(result);
            Assert.Equal(element, repo.Database.GetCollection <Dto>().FindAll().First());
        }
Beispiel #17
0
        public void DeleteTransactionTypeCommandHandler_NotExisting_NoChange()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new DeleteTransactionTypeCommandHandler(repository);
            var command    = new DeleteTransactionTypeCommand(new TransactionType());

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <TransactionType>());
        }
        public void DeleteStockCommandHandler_NullEmptyDb_EmptyDb()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new DeleteStockCommandHandler(repository);
            var command    = new DeleteStockCommand(null);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Stock>());
        }
        public void UpsertCategoriesCommandHandler_NullEmptyDb_EmptyDb()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertCategoriesCommandHandler(repository);
            var command    = new UpsertCategoriesCommand((Category)null);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Category>());
        }
Beispiel #20
0
        public void TransactionQueryHandler_TransactionQueryEmptyDatabase_EmptyArray()
        {
            //given
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new TransactionQueryHandler(repository);
            var query      = new TransactionQuery();

            //when
            var result = handler.Execute(query);

            //then
            Assert.NotNull(result);
            Assert.Empty(result);
        }
Beispiel #21
0
        public void Remove_ElementInDb_1()
        {
            //given
            var repo  = LiteDbHelper.CreateMemoryDb();
            var input = new[] { new Tag(), new Tag() };

            repo.Database.UpsertBulk(input);

            //when
            int result = repo.Database.Remove(input[0]);

            //then
            Assert.Equal(1, result);
        }
Beispiel #22
0
        public void Query_NotEmptyDb_Same()
        {
            //given
            var repo  = LiteDbHelper.CreateMemoryDb();
            var input = new[] { new Tag(), new Tag() };

            repo.Database.UpsertBulk(input);

            //when
            var result = repo.Database.Query <Tag>();

            //then
            Assert.Equal(input.OrderBy(x => x.Id), result.OrderBy(x => x.Id));
        }
        public void DeleteTransactionCommandHandler_Existing_Removed()
        {
            //given
            var transaction = new Transaction();
            var repository  = LiteDbHelper.CreateMemoryDb();
            var handler     = new DeleteTransactionCommandHandler(repository);
            var command     = new DeleteTransactionCommand(transaction);

            repository.Database.Upsert(transaction);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Transaction>());
        }
Beispiel #24
0
        public void DeleteCategoryCommandHandler_Existing_Removed()
        {
            //given
            var category   = new Category();
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new DeleteCategoryCommandHandler(repository);
            var command    = new DeleteCategoryCommand(category);

            repository.Database.Upsert(category);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Category>());
        }
        public void DeleteStockCommandHandler_Existing_Removed()
        {
            //given
            var stock      = new Stock();
            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new DeleteStockCommandHandler(repository);
            var command    = new DeleteStockCommand(stock);

            repository.Database.Upsert(stock);

            //when
            handler.Execute(command);

            //then
            Assert.Empty(repository.Database.Query <Stock>());
        }
Beispiel #26
0
        public void RemoveAll_QueryElementsInDb_MatchingElementsCount()
        {
            //given
            var repo  = LiteDbHelper.CreateMemoryDb();
            var input = new[] { new Tag(), new Tag(), new Tag {
                                    Name = "Tag"
                                } };

            repo.Database.UpsertBulk(input);

            //when
            int result = repo.Database.RemoveAll <Tag>(x => string.IsNullOrEmpty(x.Name));

            //then
            Assert.Equal(2, result);
        }
Beispiel #27
0
        public void RemoveAll_ElementsInDb_ElementsCount()
        {
            //given
            var repo  = LiteDbHelper.CreateMemoryDb();
            var input = new[] { new Tag(), new Tag(), new Tag {
                                    Name = "Tag"
                                } };

            repo.Database.UpsertBulk(input);

            //when
            int result = repo.Database.RemoveAll <Tag>();

            //then
            Assert.Equal(input.Length, result);
        }
Beispiel #28
0
        public void UpsertBulk_NotNullNotInDbAlQuery_CountAndObjectInDb()
        {
            //given
            var repo = LiteDbHelper.CreateMemoryDb();

            Dto[] input = { new Tag {
                                Name = "tag"
                            }, new Dto(), new Dto() };

            //when
            int result = repo.Database.UpsertBulk(input);

            //then
            Assert.Equal(3, result);
            Assert.Equal(input.OrderBy(x => x.Id), repo.Database.GetCollection <Dto>().FindAll().OrderBy(x => x.Id));
        }
Beispiel #29
0
        public void VerySimpleCascadeReferenceUpdateWithDbRefTest()
        {
            //given
            var repo      = LiteDbHelper.CreateMemoryDb();
            var category1 = new Category {
                Name = "parent"
            };
            var category2 = new Category {
                Name = "childA", Parent = category1
            };
            var category3 = new Category {
                Name = "childB", Parent = category1
            };
            var categories = new[] { category1, category2, category3 };

            repo.Database.UpsertBulk(categories);

            //when
            category3.Parent = category2;
            repo.Database.Upsert(category3);

            //then
            var loadedCategories = repo.Database.Query <Category>();

            //is there
            int elementsCount = repo.Query <Category>().Count();

            Assert.Equal(categories.Length, elementsCount);

            Assert.Contains(category3, loadedCategories);
            Assert.Contains(category2, loadedCategories);
            Assert.Contains(category1, loadedCategories);

            //is same
            Assert.Equal(category3, loadedCategories.First(x => x.Id == category3.Id));
            Assert.Equal(category3.Name, loadedCategories.First(x => x.Id == category3.Id).Name);
            Assert.Equal(category3.Parent, loadedCategories.First(x => x.Id == category3.Id).Parent);

            Assert.Equal(category2, loadedCategories.First(x => x.Id == category2.Id));
            Assert.Equal(category2.Name, loadedCategories.First(x => x.Id == category2.Id).Name);
            Assert.Equal(category2.Parent, loadedCategories.First(x => x.Id == category2.Id).Parent);

            Assert.Equal(category1, loadedCategories.First(x => x.Id == category1.Id));
            Assert.Equal(category1.Name, loadedCategories.First(x => x.Id == category1.Id).Name);
            Assert.Equal(category1.Parent, loadedCategories.First(x => x.Id == category1.Id).Parent);
        }
        public void UpsertSearchStateCommandHandler_UpsertOneObjectWithoutNameTwice_OneInstanceOfSavedObjectInDb()
        {
            //given
            var searchState = new SearchState();

            var repository = LiteDbHelper.CreateMemoryDb();
            var handler    = new UpsertSearchStateCommandHandler(repository);
            var command    = new UpsertSearchStateCommand(new [] { searchState, searchState });

            //when
            handler.Execute(command);

            //then
            var result = repository.Database.Query <SearchState>().ToArray();

            Assert.Single(result);
            Assert.Equal(searchState, result[0]);
        }