Esempio n. 1
0
        public void WhenModelIsValid_ThenNoExceptionIsThrown()
        {
            var model = WithUpdateModel();
            var act   = new AsyncTestDelegate(() => ShortLinkUpdateValidator.ValidateModelAsync(model));

            Assert.DoesNotThrowAsync(act);
        }
Esempio n. 2
0
        public void WhenModelIsNotAnInstanceOfAnObject_ThenItThrowsArgumentNullException()
        {
            ShortLinkUpdateDto model = null;
            var act = new AsyncTestDelegate(() => ShortLinkUpdateValidator.ValidateModelAsync(model));

            Assert.ThrowsAsync <ArgumentNullException>(act);
        }
Esempio n. 3
0
        public void WhenModelContainsAnInvalidEndpointUrl_ThenItThrowsModelValidationException()
        {
            var model = WithUpdateModel();

            model.EndpointUrl = "go-bananas";
            var act = new AsyncTestDelegate(() => ShortLinkUpdateValidator.ValidateModelAsync(model));

            Assert.ThrowsAsync <ModelValidationException>(act, "Found a validation error");
        }
Esempio n. 4
0
        public void WhenModelContainsAnInvalidShortCode_ThenItThrowsModelValidationException()
        {
            var model = WithUpdateModel();

            model.ShortCode = "1234abcd";
            var act = new AsyncTestDelegate(() => ShortLinkUpdateValidator.ValidateModelAsync(model));

            Assert.ThrowsAsync <ModelValidationException>(act, "Found a validation error");
        }
        public async Task UpdateAsync(string ownerSubjectId, Guid id, ShortLinkUpdateDto dto)
        {
            if (!id.Equals(dto.Id))
            {
                throw new InvalidUpdateRequestException($"Update request for ID '{id}' contains a model with ID '{dto.Id}'");
            }
            await ShortLinkUpdateValidator.ValidateModelAsync(dto);

            if (await _repository.CheckIfShortCodeIsUniqueForShortLinkAsync(id, dto.ShortCode))
            {
                await InvalidateCacheAsync(dto.ShortCode);

                await _repository.UpdateExistingShortLinkAsync(ownerSubjectId, dto);
            }
        }