private void SaveAction()
        {
            try
            {
                if (!_validationGroup.Validate())
                {
                    return;
                }

                var package = new PackageItem
                {
                    Barcode = Barcode.Value,
                    Width   = Width.Value.ToDouble(),
                    Height  = Height.Value.ToDouble(),
                    Depth   = Depth.Value.ToDouble(),
                    Date    = DateTimeOffset.Now
                };

                _packageService.AddPackage(package);
                _popupService.ShowToast(string.Format(Strings.PackageSaveSuccess,
                                                      package.Width,
                                                      package.Height,
                                                      package.Depth,
                                                      package.Barcode));

                ResetAction();
            }
            catch (Exception e)
            {
                _popupService.ShowToast(string.Format(Strings.PackageSaveError, e.Message));
            }
        }
        public void Validate_NoProperties_ValidationSuccess()
        {
            // Arrange
            var group = new ValidationGroup();

            // Act
            var result = group.Validate();

            // Assert
            result.Should().BeTrue();
        }
        public void Validate_AllPropertiesValid_ValidationSuccess()
        {
            // Arrange
            var propertyOne = new ValidatedProperty <string>("5")
                              .IsRequired()
                              .IsDouble();

            var propertyTwo = new ValidatedProperty <string>("12")
                              .IsRequired()
                              .IsDouble();

            var group = new ValidationGroup(propertyOne, propertyTwo);

            // Act
            var result = group.Validate();

            // Assert
            result.Should().BeTrue();
        }
        public void Validate_AllPropertyInvalid_ValidationFailed()
        {
            // Arrange
            var propertyOne = new ValidatedProperty <string>().IsRequired();

            var propertyTwo = new ValidatedProperty <string>("qwerty")
                              .IsRequired()
                              .IsDouble();

            var group = new ValidationGroup(propertyOne, propertyTwo);

            // Act
            var result = group.Validate();

            // Assert
            using (new AssertionScope())
            {
                result.Should().BeFalse();
                propertyOne.Error.Should().Be(Strings.ValueIsMandatory);
                propertyTwo.Error.Should().Be(Strings.ValueHasIncorrectFormat);
            }
        }