public void WhenModelIsNotAnInstanceOfAnObject_ThenItThrowsArgumentNullException()
        {
            ShortLinkCreateDto model = null;
            var act = new AsyncTestDelegate(() => ShortLinkCreateValidator.ValidateModelAsync(model));

            Assert.ThrowsAsync <ArgumentNullException>(act);
        }
        public async Task <ShortLinkDetailsDto> CreateAsync(string ownerSubjectId, ShortLinkCreateDto dto)
        {
            await ShortLinkCreateValidator.ValidateModelAsync(dto);

            var shortCode = await GenerateUniqueShortLink();

            return(await _repository.CreateNewShortLinkAsync(shortCode, dto.EndpointUrl, ownerSubjectId));
        }
        public void WhenModelContainsAValidUrl_ThenNoExceptionIsThrown(string url)
        {
            var model = new ShortLinkCreateDto
            {
                EndpointUrl = url
            };
            var act = new AsyncTestDelegate(() => ShortLinkCreateValidator.ValidateModelAsync(model));

            Assert.DoesNotThrowAsync(act);
        }
        public void WhenModelContainsAnInvalidUrl_ThenItThrowsModelValidationException()
        {
            var model = new ShortLinkCreateDto
            {
                EndpointUrl = "not-a-valid-url"
            };
            var act = new AsyncTestDelegate(() => ShortLinkCreateValidator.ValidateModelAsync(model));

            Assert.ThrowsAsync <ModelValidationException>(act, "Found a validation error");
        }