public async void AssetValidator_FailsIfRackDoesNotExist()
        {
            var mockAssetRepo = new Mock <IAssetRepository>();

            mockAssetRepo.Setup(o => o.AssetIsUniqueAsync(It.IsAny <string>(), It.IsAny <Guid>()))
            .ReturnsAsync(true);

            var mockRackRepo = new Mock <IRackRepository>();

            mockRackRepo.Setup(o => o.AddressExistsAsync(It.IsAny <string>(), It.IsAny <int>(), Guid.NewGuid()))
            .ReturnsAsync(true);

            var mockModelRepo = new Mock <IModelRepository>();

            mockModelRepo.Setup(o => o.ModelExistsAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>()))
            .ReturnsAsync(true);

            var mockIdentityRepo = new Mock <IIdentityRepository>();

            mockIdentityRepo.Setup(o => o.GetUserAsync(It.IsAny <Guid>()))
            .ReturnsAsync(new User());     // not null

            var sut = new AssetValidator(mockAssetRepo.Object, mockRackRepo.Object, mockModelRepo.Object,
                                         mockIdentityRepo.Object);

            var asset = GetValidAsset();

            var result = await sut.ValidateAsync(asset);

            Assert.False(result.IsValid);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Validates all properties of properties of an AssetDto object.
        /// </summary>
        /// <param name="dto">The <see cref="AssetDto"/>.</param>
        protected override async Task ValidateAsync(AssetDto dto)
        {
            if (IsNull(dto))
            {
                return;
            }
            var url            = $"https://restcountries.eu/rest/v2/name/{dto.CountryOfDepartment}?fullText=true";
            var assetValidator = new AssetValidator(HttpDataAccess.SendRequestAsync(url));
            var results        = await assetValidator.ValidateAsync(new ValidationContext <Asset>(Adapt(dto)));

            foreach (var e in results.Errors)
            {
                ModelState.AddModelError(e.PropertyName, Localizer[e.ErrorCode ?? e.ErrorMessage]);
            }
        }