Example #1
0
        public async Task Given_FriendlyUrl_When_ShortenAsync_Invoked_Then_It_Should_Return_Result(string hostname, int length, string original, string friendly)
        {
            var shortenUrl = new Mock <ShortenUrlSettings>();

            shortenUrl.SetupGet(p => p.Hostname).Returns(hostname);
            shortenUrl.SetupGet(p => p.Length).Returns(length);

            var settings = this._mocker.CreateAppSettingsInstance();

            settings.SetupGet(p => p.ShortenUrl).Returns(shortenUrl.Object);

            var query   = new Mock <IQuery>();
            var command = new Mock <ICommand>();

            var service = new ShortenerService(settings.Object, query.Object, command.Object);

            var payload = new ShortenerRequest()
            {
                Original = new Uri(original),
                Friendly = friendly
            };

            var result = await service.ShortenAsync(payload).ConfigureAwait(false);

            result.Original.ToString().TrimEnd('/').Should().Be(original.TrimEnd('/'));
            result.Shortened.ToString().TrimEnd('/').Should().Be($"https://{hostname}/{friendly.TrimEnd('/')}");
            result.ShortUrl.Should().Be(friendly);
        }
Example #2
0
        public void Given_Null_When_ShortenAsync_Invoked_Then_It_Should_Throw_Exception()
        {
            var settings = this._mocker.CreateAppSettingsInstance();
            var query    = new Mock <IQuery>();
            var command  = new Mock <ICommand>();

            var service = new ShortenerService(settings.Object, query.Object, command.Object);

            Func <Task> func = async() => await service.ShortenAsync(null).ConfigureAwait(false);

            func.Should().Throw <ArgumentNullException>();
        }