public void DataGridInitializationTest()
 {
     var viewmodel = new InventoryStatusViewModel();
     Assert.IsNotNull(viewmodel.DataGridViewModel1.Items);
     Assert.IsNotNull(viewmodel.DataGridViewModel2.Items);
     Assert.IsTrue(viewmodel.DataGridViewModel1.Items.Count >= viewmodel.DataGridViewModel2.Items.Count);
 }
        public void ColumnCheckBoxTest()
        {
            var viewmodel = new InventoryStatusViewModel();

            viewmodel.ShowMakerColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.MakerColumnVisibility);

            viewmodel.ShowProductColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.ProductColumnVisibility);

            viewmodel.ShowMeasureColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.MeasureColumnVisibility);

            viewmodel.ShowMakerColumn = false;
            Assert.AreEqual(Visibility.Collapsed, viewmodel.DataGridViewModel1.MakerColumnVisibility);

            viewmodel.ShowProductColumn = false;
            Assert.AreEqual(Visibility.Collapsed, viewmodel.DataGridViewModel1.ProductColumnVisibility);

            viewmodel.ShowMeasureColumn = false;
            Assert.AreEqual(Visibility.Collapsed, viewmodel.DataGridViewModel1.MeasureColumnVisibility);

            viewmodel.ShowMakerColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.MakerColumnVisibility);

            viewmodel.ShowProductColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.ProductColumnVisibility);

            viewmodel.ShowMeasureColumn = true;
            Assert.AreEqual(Visibility.Visible, viewmodel.DataGridViewModel1.MeasureColumnVisibility);
        }
        public void Add()
        {
            new Dummy().Create();
            IOStockDataAmenderViewModel viewmodel = new IOStockDataAmenderViewModel();
            InventoryStatusViewModel inventoryStatusViewModel = new InventoryStatusViewModel();
            IOStockStatusViewModel iostockStatusViewModel = new IOStockStatusViewModel();
            //날짜를 선택
            iostockStatusViewModel.SelectedGroupItem = IOStockStatusViewModel.GROUPITEM_DATE;
            iostockStatusViewModel.DatePickerViewModel.TodayCommand.Execute(null); //올해 버튼을 클릭
            Assert.IsFalse(viewmodel.IsReadOnlyProductTextBox); //제품 이름 변경 가능
            Assert.IsTrue(viewmodel.ProductSearchCommand.CanExecute(null)); //제품 선택 가능
            //정보 입력
            viewmodel.StockType = IOStockType.INCOMING;
            viewmodel.ProductText = "some product";
            Assert.IsTrue(viewmodel.Product == null);
            var spec = viewmodel.SpecificationText = "some specification";
            var specMemo = viewmodel.SpecificationMemo = "some specification meno";
            var maker = viewmodel.MakerText = "some maker";
            var measure = viewmodel.MeasureText = "some measure";
            var client = viewmodel.ClientText = "some client";
            var warehouse = viewmodel.WarehouseText = "some warehouse";
            var project = viewmodel.ProjectText = "some project";
            var employee = viewmodel.EmployeeText = "some name";
            var memo = viewmodel.Memo = "some memo";
            var qty = viewmodel.Quantity = 666;
            var price = viewmodel.UnitPrice = 6666;
            var remain = viewmodel.RemainingQuantity;

            //저장
            var iostock = viewmodel.Record();
            Assert.IsTrue(iostock.StockType == IOStockType.INCOMING);
            Assert.IsTrue(iostock.Supplier != null);
            Assert.IsTrue(iostock.Customer == null);
            //입출고 데이터그리드에 추가되었는지 확인
            Assert.IsTrue(iostockStatusViewModel.DataGridViewModel.Items.Any(x => x.ID == iostock.ID));
            var inoutStock = iostockStatusViewModel.DataGridViewModel.Items.Where(x => x.ID == iostock.ID).Single();
            //재고 데이터그리드에 추가되었는지 확인
            Assert.IsTrue(inventoryStatusViewModel.GetDataGridItems().Any(x => x.ID == iostock.Inventory.ID));
            var inventory = inventoryStatusViewModel.GetDataGridItems().Where(x => x.ID == iostock.Inventory.ID).Single();
            var oid = DataDirector.GetInstance();
            //검사
            Assert.IsNotNull(oid.SearchInventory(iostock.Inventory.ID)); //inventory director에 추가되었는지 확인한다.
            Assert.AreEqual(spec, iostock.Inventory.Specification);
            Assert.AreEqual(specMemo, iostock.Inventory.Memo);
            Assert.AreEqual(maker, iostock.Inventory.Maker.Name);
            Assert.AreEqual(measure, iostock.Inventory.Measure.Name);
            Assert.AreEqual(client, iostock.Supplier.Name);
            Assert.AreEqual(warehouse, iostock.Warehouse.Name);
            Assert.AreEqual(employee, iostock.Employee.Name);
            Assert.AreEqual((int)qty, iostock.Quantity);
            Assert.AreEqual(memo, iostock.Memo);
            Assert.AreEqual(price, iostock.UnitPrice);
            Assert.AreEqual(qty, iostock.RemainingQuantity);
            Assert.AreEqual((int)qty, iostock.Inventory.Quantity);
            var ofd = DataDirector.GetInstance();
            Assert.IsNotNull(ofd.SearchField<Maker>(iostock.Inventory.Maker.ID));
            Assert.IsNotNull(ofd.SearchField<Measure>(iostock.Inventory.Measure.ID));
        }
        public void TestTreeViewSelect3()
        {
            var viewmodel = new InventoryStatusViewModel();
            var productNode = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
            var inventoryNode = productNode.Root.Random();
            viewmodel.TreeViewViewModel.AddSelectedNodes(productNode);
            viewmodel.TreeViewViewModel.AddSelectedNodes(inventoryNode);

            var inventories = DataDirector.GetInstance().SearchInventories(productNode.ObservableObjectID);
            var inventoryIds = inventories.Select(x => x.ID);
            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => inventoryIds.Contains(x.ID)));
        }
        public void DeleteInventoryNodeThenSyncTreeView()
        {
            var viewmodel = new InventoryStatusViewModel();
            var productNode = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
            var inventoryNode = productNode.Root.Random();
            var treeview = viewmodel.TreeViewViewModel;
            treeview.AddSelectedNodes(inventoryNode);

            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => x.ID == inventoryNode.ObservableObjectID));
            //삭제가 가능함
            Assert.IsTrue(treeview.CanDeleteNode());
            //삭제 명령
            treeview.SelectedNodeDeletionCommand.Execute(null);
            //inventory 리스트에서도 삭제 확인
            var inven = DataDirector.GetInstance().SearchInventory(inventoryNode.ObservableObjectID);
            Assert.IsNull(inven);
            //treeview에서도 삭제 확인
            Assert.IsFalse(TreeViewNodeDirector.GetInstance().Contains(inventoryNode));
            //datagrid에서 삭제 확인
            Assert.IsFalse(viewmodel.GetDataGridItems().Any(x => x.ID == inventoryNode.ObservableObjectID));
        }
        public void WhenAddNewMeasureSyncMeasures()
        {
            var viewmodel = new InventoryStatusViewModel();

            var someMeasure = new Measure("some measure");
            DataDirector.GetInstance().AddField(someMeasure);
            Assert.IsTrue(viewmodel.DataGridViewModel1.Measures.Any(x => x.ID == someMeasure.ID));
        }
        public void TestTreeViewSelect()
        {
            var viewmodel = new InventoryStatusViewModel();
            var node = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.INVENTORY).Random();
            viewmodel.TreeViewViewModel.NodesSelectedEventCommand.Execute(new SelectionChangedCancelEventArgs(new TreeViewNode[] { node }, null));

            Assert.AreEqual(viewmodel.GetDataGridItems().Single().ID, node.ObservableObjectID);
        }
        public void WhenDeleteMeasureSyncMeasures()
        {
            var viewmodel = new InventoryStatusViewModel();

            var someMeasure = DataDirector.GetInstance().CopyFields<Measure>().Random();
            Assert.IsTrue(viewmodel.DataGridViewModel1.Measures.Contains(someMeasure));
            DataDirector.GetInstance().RemoveField(someMeasure);
            Assert.IsFalse(viewmodel.DataGridViewModel1.Measures.Contains(someMeasure));
        }
        public void WhenAddNewMakerSyncMakers()
        {
            var viewmodel = new InventoryStatusViewModel();

            var someMaker = new Maker("some maker");
            DataDirector.GetInstance().AddField(someMaker);
            Assert.IsTrue(viewmodel.DataGridViewModel1.Makers.Any(x => x.ID == someMaker.ID));
        }
        public void DeleteItemThenSyncDb()
        {
            var viewmodel = new InventoryStatusViewModel();
            var item = viewmodel.DataGridViewModel1.SelectedItem = viewmodel.DataGridViewModel1.Items.Random();
            string inventoryID = item.ID;

            viewmodel.DataGridViewModel1.InventoryDataDeletionCommand.Execute(null);

            var infmt = DataDirector.GetInstance().DB.Select<InventoryFormat>(inventoryID);
            Assert.IsNull(infmt);

            var iofmts = DataDirector.GetInstance().DB.Query<IOStockFormat>("select * from {0} where {1} = '{2}';", typeof(IOStockFormat).Name, "InventoryID", inventoryID);
            Assert.AreEqual(0, iofmts.Count());
        }
        public void DeleteItemThenSyncDirector()
        {
            var viewmodel = new InventoryStatusViewModel();
            var item = viewmodel.DataGridViewModel1.SelectedItem = viewmodel.DataGridViewModel1.Items.Random();
            string inventoryID = item.ID;

            viewmodel.DataGridViewModel1.InventoryDataDeletionCommand.Execute(null);

            var result = DataDirector.GetInstance().SearchInventory(inventoryID);
            Assert.IsNull(result);
        }
        public void DeleteItemThenSyncIOStockViewModel()
        {
            var viewmodel = new InventoryStatusViewModel();
            var iosvm = new IOStockStatusViewModel();
            iosvm.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PRODUCT;
            var item = viewmodel.DataGridViewModel1.SelectedItem = viewmodel.DataGridViewModel1.Items.Random();
            string inventoryID = item.ID;
            Console.WriteLine("삭제할 Inventory ID: " + inventoryID);
            var node = viewmodel.TreeViewViewModel.Root.SelectMany(x => x.Descendants().Where(y => y.ObservableObjectID == item.Product.ID)).Single();
            iosvm.TreeViewViewModel.ExecuteNodesSelectedEventCommand(new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node }, null));

            Console.WriteLine("삭제 전 입출고 현황 데이터그리드 아이템 Inventory ID 목록");
            iosvm.DataGridViewModel.Items.ToList().ForEach(x => Console.WriteLine(x.Inventory.ID));

            viewmodel.DataGridViewModel1.InventoryDataDeletionCommand.Execute(null);

            Console.WriteLine("삭제 후 입출고 현황 데이터그리드 아이템 Inventory ID 목록");
            iosvm.DataGridViewModel.Items.ToList().ForEach(x => Console.WriteLine(x.Inventory.ID));
            Assert.IsTrue(iosvm.DataGridViewModel.Items.All(x => x.Inventory.ID != inventoryID));
        }
        public void DeleteItemThenSyncDataGridItems()
        {
            var viewmodel = new InventoryStatusViewModel();
            var item = viewmodel.DataGridViewModel1.SelectedItem = viewmodel.DataGridViewModel1.Items.Random();

            viewmodel.DataGridViewModel1.InventoryDataDeletionCommand.Execute(null);

            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => x.ID != item.ID));
        }
        public void WhenSelectNodesThenUpdateDataGrid()
        {
            var viewmodel = new InventoryStatusViewModel();
            //NODE 하나 선택
            var node = viewmodel.TreeViewViewModel.Root.Where(x => x.Type == NodeType.PRODUCT).Random();
            viewmodel.TreeViewViewModel.ExecuteNodesSelectedEventCommand(new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node }, new List<TreeViewNode>()));
            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => x.Product.ID == node.ObservableObjectID));

            //다른 NODE하나를 선택
            var node2 = viewmodel.TreeViewViewModel.Root.Where(x => x.Type == NodeType.PRODUCT).Random();
            viewmodel.TreeViewViewModel.ExecuteNodesSelectedEventCommand(new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node2 }, new List<TreeViewNode>() { node }));
            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => x.Product.ID == node2.ObservableObjectID));

            //NODE 2개를 선택
            viewmodel.TreeViewViewModel.ExecuteNodesSelectedEventCommand(new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node }, new List<TreeViewNode>() { node }));
            Assert.IsTrue(viewmodel.GetDataGridItems().All(x => x.Product.ID == node2.ObservableObjectID || x.Product.ID == node.ObservableObjectID));
        }
        public void ReNameTreeViewNode()
        {
            var viewmodel = new InventoryStatusViewModel();
            var node = viewmodel.TreeViewViewModel.Root.Where(x => x.Type == NodeType.PRODUCT).Random();
            node.IsNameEditable = false;
            string name = node.Name = "플라리아";
            Assert.IsFalse(viewmodel.DataGridViewModel1.Items.Any(item => item.Product.Name == name));
            Assert.IsFalse(viewmodel.DataGridViewModel2.Items.Any(item => item.Product.Name == name));

            node.IsNameEditable = true;
            name = node.Name = "플라리아";
            Assert.IsTrue(viewmodel.DataGridViewModel1.Items.Any(item => item.Product.Name == name) || viewmodel.DataGridViewModel2.Items.Any(item => item.Product.Name == name));
        }
        public void WhenNewInventoryDataInsertThenSyncDataGridViewMdoel()
        {
            var inventoryStatusViewModel = new InventoryStatusViewModel();
            var node = inventoryStatusViewModel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
            inventoryStatusViewModel.TreeViewViewModel.AddSelectedNodes(node);

            var product = DataDirector.GetInstance().SearchField<Product>(node.ObservableObjectID);
            var viewmodel = new InventoryManagerViewModel(product);
            var name = viewmodel.Specification = "some specification";

            var inventory = viewmodel.Insert();

            Assert.IsTrue(inventoryStatusViewModel.GetDataGridItems().Any(x => x.ID == inventory.ID));
        }