public PriceListAndItemsViewModel GetPriceListAndItemsViewModelFromPriceList(PriceList priceList)
        {
            var columns = _db.Columns.Where(c => c.PriceListId == priceList.Id).ToList();
            IEnumerable <Item> items = _db.Items.Where(i => i.PriceListId == priceList.Id);
            IEnumerable <Cell> cells = _db.Cells.Where(c => c.Item.PriceListId == priceList.Id);

            var priceListWithItems = new PriceListAndItemsViewModel(priceList, columns, items, cells);

            return(priceListWithItems);
        }
        public void GetPriceListAndItemsViewModelFromPriceList_IsOk()
        {
            //arrange
            var priceList1 = new PriceList {
                Id = 1, Name = "First priceList"
            };

            _context.PriceLists.Add(priceList1);

            var column1 = new Column {
                Id = 1, DataType = DataType.Numeric, HeaderText = "Numeric", PriceListId = 1
            };

            _context.Columns.Add(column1);

            var item1 = new Item {
                Id = 1, PriceListId = 1, Title = "Item1"
            };

            _context.Items.Add(item1);

            var cell1 = new Cell {
                Id = 1, Data = "1", Item = item1, ItemId = 1
            };

            _context.Cells.Add(cell1);

            var expected = new PriceListAndItemsViewModel(new PriceList {
                Id = priceList1.Id, Name = priceList1.Name
            },
                                                          new List <Column>
            {
                new Column {
                    Id = 1, DataType = DataType.Numeric, HeaderText = "Numeric", PriceListId = 1
                }
            },
                                                          new List <Item>
            {
                new Item {
                    Id = 1, PriceListId = 1, Title = "Item1"
                }
            },
                                                          new List <Cell>
            {
                new Cell {
                    Id = 1, Data = "1", Item = item1, ItemId = 1
                }
            });

            //act
            var actual = _controller.GetPriceListAndItemsViewModelFromPriceList(priceList1);

            //assert
            Assert.AreEqual(expected.PriceList.Id, actual.PriceList.Id);
            Assert.AreEqual(expected.PriceList.Name, actual.PriceList.Name);

            Assert.AreEqual(expected.Columns.Single().Id, actual.Columns.Single().Id);
            Assert.AreEqual(expected.Columns.Single().DataType, actual.Columns.Single().DataType);
            Assert.AreEqual(expected.Columns.Single().HeaderText, actual.Columns.Single().HeaderText);
            Assert.AreEqual(expected.Columns.Single().PriceListId, actual.Columns.Single().PriceListId);

            Assert.AreEqual(expected.Items.Single().Id, actual.Items.Single().Id);
            Assert.AreEqual(expected.Items.Single().PriceListId, actual.Items.Single().PriceListId);
            Assert.AreEqual(expected.Items.Single().Title, actual.Items.Single().Title);

            Assert.AreEqual(expected.Cells.Single().Id, actual.Cells.Single().Id);
            Assert.AreEqual(expected.Cells.Single().Data, actual.Cells.Single().Data);
            Assert.AreEqual(expected.Cells.Single().ItemId, actual.Cells.Single().ItemId);
            Assert.AreEqual(expected.Cells.Single().Item.Id, actual.Cells.Single().Item.Id);
            Assert.AreEqual(expected.Cells.Single().Item.PriceListId, actual.Cells.Single().Item.PriceListId);
            Assert.AreEqual(expected.Cells.Single().Item.Title, actual.Cells.Single().Item.Title);
        }