public void Add_Buyer_To_BuyerList_When_Received_From_BuyerVM()
        {
            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object);

            int actulNumberOfBuyers = _paymentViewModel.BuyerList.Count;

            var buyerToAdd = new Buyer
            {
                ID = 1,
                FirstName = "Michał",
                LastName = "Rakel",
                REGON = "4234242",
                NIP = "3234326576",
                CompanyName = "firma",
                Address = new Address
                {
                    City = "Kraków",
                    StreetAddress = "ul. Kredki 5/8a",
                    ZipCode = "31-063"
                }
            };

            //Act
            Messenger.Default.Send(new MessageService(buyerToAdd, EntityState.Added), MessengerToken.PaymentVm);

            //Verify
            Assert.IsTrue(_paymentViewModel.BuyerList.Count==actulNumberOfBuyers+1);
        }
        public void Add_PaymentDetail_To_PaymentDetailList_When_Received_From_PaymentDetailViewModel_With_EntiyStateEdit()
        {
            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object);

            var paymentDetailToAdd = new PaymentDetail
            {
                Description = "jakis opis"
            };

            //Act
            Messenger.Default.Send(new MessageService(paymentDetailToAdd, EntityState.Edited), MessengerToken.PaymentVm);

            //Verify
            Assert.IsTrue(_paymentViewModel.PaymentDetailList.Count == 1);
        }
        public void When_PaymentDetail_Removed_From_PaymentDetailList_Send_Message_To_PaymentDetailViewModel_With_Number_Of_Elements_In_PaymentDetailList()
        {
            int expectedNumerOfProductsInPaymentDetailList = 0;
            Messenger.Default.Register<int>(this, MessengerToken.PaymentDetailVm, message =>
            {
                expectedNumerOfProductsInPaymentDetailList = message;
            });

            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object)
            {
                PaymentDetailList =
                 {
                  new PaymentDetail
                    {
                        Description = "jakis opis"
                    },
                 }
            };

            //Act
            _paymentViewModel.PaymentDetailList.RemoveAt(0);

            int actualNumerOfProductsInPaymentDetailList = _paymentViewModel.PaymentDetailList.Count;

            //Verify
            Assert.IsTrue(expectedNumerOfProductsInPaymentDetailList == actualNumerOfProductsInPaymentDetailList);
        }
        public void NavigateToBuyerListCommand_When_Executed_Invoke_NavigateTo_With_BuyerListKey_And_SelectedSeller()
        {
            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object);

            //Act
            _paymentViewModel.NavigateToBuyerListCommand.Execute(null);

            //Verify
            _navigationServiceMock.Verify(m=>m.NavigateTo(ViewModelLocator.BuyerListKey,It.IsAny<Seller>()),Times.Once());
        }
        public void EditPaymentDetailCommand_When_Executed_Send_SelectedPaymentDetail_To_PaymentDetailVieModel()
        {
            //Arrange
            PaymentDetail receivedPaymentDetail = null;
            var receivedState = EntityState.Default;

            Messenger.Default.Register<MessageService>(this,MessengerToken.PaymentDetailVm,handleMessage=>
            {
                receivedPaymentDetail = handleMessage.PaymentDetail;
                receivedState = handleMessage.EntityState;
            });

            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object);
            _paymentViewModel.PaymentDetailList = new ItemsChangeObservableCollection<PaymentDetail>
            {
                            new PaymentDetail
                            {
                                Description = "Czynsz za lokal ul. Marsa 3 maj",
                                MeasureUnit = "szt.",
                                PricePerUnit = 5300,
                                Quantity = 1
                            },
                            new PaymentDetail
                            {
                                Description = "Czynsz za lokal ul. wris 3 lipiec",
                                MeasureUnit = "szt.",
                                PricePerUnit = 3500,
                                Quantity = 1
                            }

                         };
            _paymentViewModel.SelectedPaymentDetail = _paymentViewModel.PaymentDetailList.First();

            //Act
            _paymentViewModel.EditPaymentDetailCommand.Execute(null);

            //Verify
            Assert.IsNotNull(receivedPaymentDetail);
            Assert.IsTrue(receivedState==EntityState.Edit);
        }
        public void EditPaymentDetailCommand_When_Executed_Remove_SelectedPaymentDetail_From_PaymentDetailList()
        {
            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object, _messageBoxMock.Object, _navigationServiceMock.Object)
            {
                PaymentDetailList = new ItemsChangeObservableCollection<PaymentDetail>
                {
                    new PaymentDetail
                    {
                        Description = "Czynsz za lokal ul. Marsa 3 maj",
                        MeasureUnit = "szt.",
                        PricePerUnit = 5300,
                        Quantity = 1
                    }
                }
            };
            _paymentViewModel.SelectedPaymentDetail = _paymentViewModel.PaymentDetailList.First();

            //Act
            _paymentViewModel.EditPaymentDetailCommand.Execute(null);

            //Verify
            Assert.IsTrue(_paymentViewModel.PaymentDetailList.Count == 0);
        }
        public void EditPaymentDetailCommand_Cannot_Execute_When_SelectedPaymentDeatil_Is_Null()
        {
            //Arrange
            _paymentViewModel = new PaymentViewModel(_contextMock.Object,_messageBoxMock.Object,_navigationServiceMock.Object);
            _paymentViewModel.SelectedPaymentDetail = null;
            //Act
            bool canExecute = _paymentViewModel.EditPaymentDetailCommand.CanExecute(null);

            //Verify
            Assert.IsFalse(canExecute);
        }