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 SelectDatePicker()
        {
            var viewmodel = new IOStockStatusViewModel();
            Assert.AreEqual(0, viewmodel.DataGridViewModel.Items.Count);
            //날짜를 선택
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_DATE;
            viewmodel.DatePickerViewModel.LastYearCommand.Execute(null); //올해 버튼을 클릭

            Assert.AreNotEqual(0, viewmodel.DataGridViewModel.Items.Count); //올해에 입력된 입출고 데이터를 데이터그리드에 추가
            foreach (var item in viewmodel.DataGridViewModel.Items)
            {
                Assert.IsTrue(new DateTime(DateTime.Now.Year - 1, 1, 1).Ticks < item.Date.Ticks);
            }
        }
        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 Quantity4()
 {
     new Dummy().Create();
     IOStockStatusViewModel iostockStatusViewModel = new IOStockStatusViewModel();
     IOStockDataAmenderViewModel viewmodel = new IOStockDataAmenderViewModel();
     //설정
     viewmodel.StockType = new Random().NextDouble() > 0.5 ? IOStockType.INCOMING : IOStockType.OUTGOING;
     var product = viewmodel.Product = DataDirector.GetInstance().CopyFields<Product>().Random();
     var inven = viewmodel.Inventory = viewmodel.InventoryList.Random();
     var beforeInvenQty = inven.Quantity;
     var date = viewmodel.Date = DateTime.Now.AddDays(-600.0 * new Random().NextDouble()); //과거로 저장
     int qty = new Random().Next(1, 10);
     viewmodel.Quantity = qty;
     //저장
     IObservableIOStockProperties obIOStock = viewmodel.Record();
     CheckQuantity(obIOStock.Inventory as ObservableInventory);
 }
        public void Modify5()
        {
            new Dummy().Create();
            var formats = DataDirector.GetInstance().DB.Select<IOStockFormat>();
            var fmt = formats.Random();
            ObservableIOStock ios = new ObservableIOStock(fmt);
            //DataGrid 업데이트
            IOStockStatusViewModel iosViewModel = new IOStockStatusViewModel();
            TreeViewNode node = TreeViewNodeDirector.GetInstance().SearchObservableObjectNode(ios.Inventory.Product.ID);
            if (node != null)
            {
                MultiSelectTreeViewModelView treeView = iosViewModel.TreeViewViewModel;
                treeView.SelectedNodes.Clear();
                treeView.ExecuteNodesSelectedEventCommand(new SelectionChangedCancelEventArgs(new TreeViewNode[] { node }, null));
            }
            Assert.AreNotEqual(0, iosViewModel.DataGridViewModel.Items.Count);

            IOStockDataAmenderViewModel viewmodel = new IOStockDataAmenderViewModel(); //추가모드로 열기
            viewmodel.Product = ios.Inventory.Product;
            viewmodel.Inventory = viewmodel.InventoryList.Where(x => x.ID == ios.Inventory.ID).Single();
            viewmodel.Maker = null; //null 할당
            viewmodel.Maker = null;

            var newRecord = viewmodel.Record();
            newRecord = iosViewModel.DataGridViewModel.Items.Where(x => x.ID == newRecord.ID).Single();
            Assert.IsNull(newRecord.Inventory.Maker);

            viewmodel = new IOStockDataAmenderViewModel(newRecord); //편집모드로 열기
            Assert.IsNull(viewmodel.Maker);
            viewmodel.MakerText = "maKeR";
            newRecord = viewmodel.Record();

            var jojoEmp = newRecord.Inventory.Maker;
            Assert.IsNotNull(newRecord.Inventory);
            Assert.AreEqual(newRecord.Inventory.Maker.Name, "maKeR");

            Assert.IsNotNull(DataDirector.GetInstance().SearchField<Maker>(newRecord.Inventory.Maker.ID));

            newRecord = iosViewModel.DataGridViewModel.Items.Where(x => x.ID == newRecord.ID).Single();
            viewmodel = new IOStockDataAmenderViewModel(newRecord); //편집모드로 열기
            viewmodel.Maker = null;
            viewmodel.MakerText = "maKeR2";
            var newnewRecord = viewmodel.Record();

            Assert.AreEqual(newnewRecord.Inventory.Maker.Name, "maKeR2");
            Assert.AreEqual(jojoEmp.ID, newRecord.Inventory.Maker.ID);
        }
        public void Modify()
        {
            new Dummy().Create();
            IOStockFormat fmt = null;
            fmt = DataDirector.GetInstance().DB.Select<IOStockFormat>().Random(); DataDirector.GetInstance().DB.Select<IOStockFormat>().Random();
            IOStockType type = fmt.StockType;
            IOStockStatusViewModel iostockStatusViewModel = new IOStockStatusViewModel();
            IOStockDataAmenderViewModel viewmodel = new IOStockDataAmenderViewModel(new ObservableIOStock(fmt));

            Assert.AreEqual(type, viewmodel.StockType);
            string id = fmt.ID;
            var clientText = viewmodel.ClientText = "SOME CLIENT";
            viewmodel.Client = null;
            var warehouseText = viewmodel.WarehouseText = "SOME WAREHOUSE";
            viewmodel.Warehouse = null;
            var employeeText = viewmodel.EmployeeText = "SOME EMPLOYEE";
            viewmodel.Employee = null;
            var projectText = viewmodel.ProjectText = "SOME PROJECT";
            viewmodel.Project = null;
            var memo = viewmodel.Memo = "SOME MEMO";
            var specificationMemo = viewmodel.SpecificationMemo = "SOME SPEC_MEMO";
            var makerText = viewmodel.MakerText = "SOME MAKER";
            viewmodel.Maker = null;
            var measureText = viewmodel.MeasureText = "SOME MEASURE";
            viewmodel.Measure = null;
            var qty = viewmodel.Quantity = 1111;
            var price = viewmodel.UnitPrice = 30302;

            viewmodel.Record();

            fmt = DataDirector.GetInstance().DB.Select<IOStockFormat>(fmt.ID);
            ObservableIOStock stock = new ObservableIOStock(fmt);

            if (stock.StockType == IOStockType.INCOMING)
            {
                Assert.AreEqual(clientText, stock.Supplier.Name);
                Assert.AreEqual(warehouseText, stock.Warehouse.Name);
            }
            else if (stock.StockType == IOStockType.OUTGOING)
            {
                Assert.AreEqual(clientText, stock.Customer.Name);
                Assert.AreEqual(projectText, stock.Project.Name);
            }
            Assert.AreEqual(employeeText, stock.Employee.Name);
            Assert.AreEqual(memo, stock.Memo);
            Assert.AreEqual(makerText, stock.Inventory.Maker.Name);
            Assert.AreEqual(measureText, stock.Inventory.Measure.Name);
            Assert.AreEqual(type, stock.StockType);

            var ofd = DataDirector.GetInstance();
            Assert.IsNotNull(ofd.SearchField<Maker>(stock.Inventory.Maker.ID));
            Assert.IsNotNull(ofd.SearchField<Measure>(stock.Inventory.Measure.ID));
        }
 /// <summary>
 /// 새로운 IOStockFormat을 추가하고자 할 경우
 /// </summary>
 /// <param name="ioStockStatusViewModel"></param>
 public IOStockDataAmenderViewModel(IOStockStatusViewModel ioStockStatusViewModel) : this()
 {
     _ioStockStatusViewModel = ioStockStatusViewModel;
 }
        public void SelectProject()
        {
            var viewmodel = new IOStockStatusViewModel();
            Assert.AreEqual(0, viewmodel.DataGridViewModel.Items.Count);
            //프로젝트 선택
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PROJECT;
            var project = viewmodel.ProjectListBoxViewModel.SelectedItem = viewmodel.ProjectListBoxViewModel.Items.Random();

            Assert.AreNotEqual(0, viewmodel.DataGridViewModel.Items.Count);
            foreach (var item in viewmodel.DataGridViewModel.Items)
            {
                Assert.IsTrue(item.Project == project);
            }
        }
        public void DeleteSelectedProject()
        {
            var viewmodel = new IOStockStatusViewModel();
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PROJECT;
            viewmodel.ProjectListBoxViewModel.SelectedItem = viewmodel.ProjectListBoxViewModel.Items.Random();

            viewmodel.ProjectListBoxViewModel.ExecuteProjectDeletionCommand();

            var items = viewmodel.DataGridViewModel.Items;
            Assert.AreEqual(0, items.Count());
        }
        public void TestProductSearch()
        {
            var viewmodel = new IOStockStatusViewModel();
            var searchvm = viewmodel.SearchViewModel;
            searchvm.SelectedItem = FilterSearchTextBoxViewModel.FILTER_PRODUCT;
            searchvm.Text = "PBL";

            searchvm.SearchCommand.Execute(null);

            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Inventory.Product.Name.Contains(searchvm.Text)));
        }
 public IOStockStatusViewModel SelectSomeTreeViewNode()
 {
     var viewmodel = new IOStockStatusViewModel();
     viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PRODUCT;
     TreeViewNode node = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
     viewmodel.TreeViewViewModel.AddSelectedNodes(node);
     return viewmodel;
 }
        public void SearchCommand()
        {
            var viewmodel = new IOStockStatusViewModel();
            var oid = DataDirector.GetInstance();
            var text1 = oid.CopyInventories().Random().Specification;
            var text2 = oid.CopyInventories().Select(x => x.Product).Distinct().Random().Name;

            viewmodel.SearchViewModel.Text = text1 + " " + text2;
            viewmodel.SearchViewModel.SearchCommand.Execute(null);

            var items = viewmodel.DataGridViewModel.Items;
            Assert.AreNotEqual(0, items.Count());
        }
        public void SearchSpecificationName()
        {
            var viewmodel = new IOStockStatusViewModel();
            var oid = DataDirector.GetInstance();
            var text = viewmodel.SearchViewModel.Text = oid.CopyInventories().Random().Specification;

            viewmodel.SearchViewModel.SearchCommand.Execute(null);

            var items = viewmodel.DataGridViewModel.Items;
            Assert.AreNotEqual(0, items.Count());
        }
        public void ControlInoutStockCheckBox()
        {
            var viewmodel = new IOStockStatusViewModel();
            viewmodel.IsCheckedInComing = true;
            viewmodel.IsCheckedOutGoing = true;
            //제품 하나 선택
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PRODUCT;
            var node = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
            viewmodel.TreeViewViewModel.ExecuteNodesSelectedEventCommand(
                new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node }, new List<TreeViewNode>()));
            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(i => IOStockType.ALL.HasFlag(i.StockType)));

            viewmodel.IsCheckedInComing = false;
            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(i => i.StockType == IOStockType.OUTGOING));

            viewmodel.IsCheckedOutGoing = false;
            Assert.IsTrue(viewmodel.DataGridViewModel.Items.Count == 0);

            viewmodel.IsCheckedInComing = true;
            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(i => i.StockType == IOStockType.INCOMING));

            viewmodel.IsCheckedOutGoing = true;
            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(i => IOStockType.ALL.HasFlag(i.StockType)));
        }
 public void SelectProduct()
 {
     var viewmodel = new IOStockStatusViewModel();
     Assert.AreEqual(0, viewmodel.DataGridViewModel.Items.Count);
     viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PRODUCT;
     var node = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
     viewmodel.TreeViewViewModel.ExecuteNodesSelectedEventCommand(
         new SelectionChangedCancelEventArgs(new List<TreeViewNode>() { node }, new List<TreeViewNode>()));
     viewmodel.OnTreeViewNodesSelected(viewmodel.TreeViewViewModel, new PropertyChangedEventArgs("SelectedNodes"));
     Assert.AreNotEqual(0, viewmodel.DataGridViewModel.Items.Count);
     foreach (var item in viewmodel.DataGridViewModel.Items)
     {
         Assert.IsTrue(item.Inventory.Product.ID == node.ObservableObjectID);
     }
 }
        public void CalcQuantity()
        {
            var viewmodel = new IOStockStatusViewModel();
            var node = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.INVENTORY).Random();
            viewmodel.TreeViewViewModel.AddSelectedNodes(node);
            IEnumerable<IOStockDataGridItem> items = viewmodel.DataGridViewModel.Items;
            IEnumerable<IOStockDataGridItem> orderedItems = items.OrderBy(x => x.Date);

            foreach (var i in orderedItems)
            {
                int remainQty = 0;
                string sql = string.Format(@"select
                                            (select sum(Quantity) from IOStockFormat where InventoryID = '{0}' and StockType = '{1}' and Date <= '{3}') -
                                            (select sum(Quantity) from IOStockFormat where InventoryID = '{0}' and StockType = '{2}' and Date <= '{3}');",
                                             i.InventoryID, (int)IOStockType.INCOMING, (int)IOStockType.OUTGOING, i.Date.ToString(MySQLClient.DATETIME));
                using (MySqlCommand cmd = new MySqlCommand(sql, _conn))
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                        remainQty = reader.GetInt32(0);
                }
                Assert.AreEqual(remainQty, i.RemainingQuantity);
            }
        }
        public void TestSpecificationSearch()
        {
            var viewmodel = new IOStockStatusViewModel();
            var searchvm = viewmodel.SearchViewModel;
            searchvm.SelectedItem = FilterSearchTextBoxViewModel.FILTER_SPECIFICATION;
            searchvm.Text = "AW";

            searchvm.SearchCommand.Execute(null);

            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Inventory.Specification.Contains(searchvm.Text)));
        }
        public void AddNewStockData()
        {
            IOStockStatusViewModel viewmodel = new IOStockStatusViewModel();
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PROJECT;
            Observable<Project> project = viewmodel.ProjectListBoxViewModel.SelectedItem = viewmodel.ProjectListBoxViewModel.Items.Random();

            var mvm = new IOStockManagerViewModel(DataDirector.GetInstance().CopyInventories().Random());
            mvm.Insert();
        }
        public void TestWarehouseSearch()
        {
            var viewmodel = new IOStockStatusViewModel();
            var searchvm = viewmodel.SearchViewModel;
            searchvm.SelectedItem = FilterSearchTextBoxViewModel.FILTER_WAREHOUSE;
            searchvm.Text = "연구";

            searchvm.SearchCommand.Execute(null);

            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Warehouse.Name.Contains(searchvm.Text)));
        }
 public IOStockManagerViewModel(IOStockStatusViewModel iOStockStatusViewModel, ObservableIOStock stock)
     : this(stock)
 {
     _iOStockStatusViewModel = iOStockStatusViewModel;
 }
        public void TestCustomerSearch()
        {
            var viewmodel = new IOStockStatusViewModel();
            var searchvm = viewmodel.SearchViewModel;
            searchvm.SelectedItem = FilterSearchTextBoxViewModel.FILTER_CUSTOMER;
            searchvm.Text = "테크";

            searchvm.SearchCommand.Execute(null);

            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Customer.Name.Contains(searchvm.Text)));
        }
 /// <summary>
 /// 기존의 IOStockFormat을 수정하고자 할 경우
 /// </summary>
 /// <param name="ioStockStatusViewModel"></param>
 /// <param name="ioStock"></param>
 public IOStockDataAmenderViewModel(IOStockStatusViewModel ioStockStatusViewModel, IObservableIOStockProperties ioStock) :
     this(ioStock)
 {
     _ioStockStatusViewModel = ioStockStatusViewModel;
 }
        public void ProjectListItemDeleteTest()
        {
            IOStockStatusViewModel viewmodel = new IOStockStatusViewModel();
            viewmodel.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PROJECT;
            Observable<Project> project = viewmodel.ProjectListBoxViewModel.SelectedItem = viewmodel.ProjectListBoxViewModel.Items.Random();
            viewmodel.ProjectListBoxViewModel.ProjectDeletionCommand.Execute(null);

            Observable<Project> result = DataDirector.GetInstance().SearchField<Project>(project.ID);
            Assert.IsNull(result);
            Assert.IsFalse(viewmodel.ProjectListBoxViewModel.Items.Contains(project));
            //Assert.AreEqual(0, viewmodel.DataGridViewModel.Items.Count());
            Assert.IsNull(viewmodel.DataGridViewModel.SelectedItem);
        }
        public void TestTreeViewSelect()
        {
            var viewmodel = new IOStockStatusViewModel();
            var node = viewmodel.TreeViewViewModel.Root.SelectMany(x => x.Descendants().Where(y => y.Type == NodeType.INVENTORY)).Random();
            viewmodel.TreeViewViewModel.AddSelectedNodes(node);

            Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Inventory.ID == node.ObservableObjectID));
        }
        public void TestTreeViewSelect3()
        {
            var viewmodel = new IOStockStatusViewModel();
            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.DataGridViewModel.Items.All(x => x.Inventory.Product.ID == productNode.ObservableObjectID));
        }
 public void Quantity3()
 {
     new Dummy().Create();
     IOStockStatusViewModel iostockStatusViewModel = new IOStockStatusViewModel();
     IOStockFormat fmt = null;
     fmt = DataDirector.GetInstance().DB.Select<IOStockFormat>().Random();
     IObservableIOStockProperties obIOStock = new ObservableIOStock(fmt);
     var inventoryQty = obIOStock.Inventory.Quantity;
     var viewmodel = new IOStockDataAmenderViewModel(obIOStock);
     viewmodel.Quantity = 12;
     obIOStock = viewmodel.Record();
     CheckQuantity(obIOStock.Inventory as ObservableInventory);
 }
 public void DeleteInventoryNodeThenSyncTreeView()
 {
     var viewmodel = new IOStockStatusViewModel();
     var productNode = viewmodel.TreeViewViewModel.SearchNodesInRoot(NodeType.PRODUCT).Random();
     var inventoryNode = productNode.Root.Random();
     var treeview = viewmodel.TreeViewViewModel;
     treeview.NodesSelectedEventCommand.Execute(new SelectionChangedCancelEventArgs(new TreeViewNode[] { inventoryNode }, null));
     Assert.IsTrue(viewmodel.DataGridViewModel.Items.All(x => x.Inventory.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.DataGridViewModel.Items.Any(x => x.Inventory.ID == inventoryNode.ObservableObjectID));
 }
 public IOStockStatusControl()
 {
     IOStockStatusViewModel viewmodel = new IOStockStatusViewModel();
     DataContext = viewmodel;
     InitializeComponent();
 }
        public void WhenModifyQtyThenSyncDataGridViewItems()
        {
            ObservableInventory inv = DataDirector.GetInstance().CopyInventories().Random();
            IOStockFormat qret = DataDirector.GetInstance().DB.Query<IOStockFormat>("select * from IOStockFormat where InventoryID = '{0}' and StockType = 2 limit 1;", inv.ID).Single();

            IOStockStatusViewModel svm = new IOStockStatusViewModel();

            svm.SelectedDataGridGroupOption = IOStockStatusViewModel.DATAGRID_OPTION_PRODUCT;
            List<TreeViewNode> nodes = svm.TreeViewViewModel.SearchNodesInRoot(NodeType.INVENTORY);
            TreeViewNode node = nodes.Where(x => x.ObservableObjectID == qret.InventoryID).Single();
            svm.TreeViewViewModel.AddSelectedNodes(node);

            IOStockDataGridItem stock = DataDirector.GetInstance().StockCollection.Where(x => x.ID == qret.ID).Single();

            IOStockManagerViewModel vm = new IOStockManagerViewModel(stock);
            int qty = vm.Quantity = 10;
            vm.Update();

            ObservableCollection<IOStockDataGridItem> items = svm.DataGridViewModel.Items;
            IOStockDataGridItem result = items.Where(x => x.ID == stock.ID).Single();

            Assert.AreEqual(result, stock);
            Assert.AreEqual(qty, result.Quantity);
        }