public void ShouldDelegateExtensionToSubBuilder()
        {
            // Setup
            DynamicMock decoratedBuilderMock = new DynamicMock(typeof(IUrlBuilder));

            decoratedBuilderMock.ExpectAndReturn("Extension", "foo");

            // Execute
            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.MockInstance, null);

            decorator.Extension = "foo";

            // Verify
            decoratedBuilderMock.Verify();
        }
        public void ShouldDelegateExtensionToSubBuilder()
        {
            // Setup
            var decoratedBuilderMock = new Mock <IUrlBuilder>();

            decoratedBuilderMock.SetupSet(builder => builder.Extension = "foo").Verifiable();

            // Execute
            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.Object, null);

            decorator.Extension = "foo";

            // Verify
            decoratedBuilderMock.Verify();
        }
        public void ShouldHandleBaseURLsWithTrailingSlashes()
        {
            /// Setup
            DynamicMock decoratedBuilderMock = new DynamicMock(typeof(IUrlBuilder));
            string      baseUrl = "https://myserver:8080/myvdir/";

            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.MockInstance, baseUrl);
            string actionName = "myAction";

            decoratedBuilderMock.ExpectAndReturn("BuildUrl", "myRelativeUrl", actionName);

            /// Execute & Verify
            Assert.AreEqual(baseUrl + "myRelativeUrl", decorator.BuildUrl(actionName));

            decoratedBuilderMock.Verify();
        }
        public void ShouldHandleBaseURLsWithTrailingSlashes()
        {
            /// Setup
            var    decoratedBuilderMock = new Mock <IUrlBuilder>();
            string baseUrl = "https://myserver:8080/myvdir/";

            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.Object, baseUrl);
            string actionName = "myAction";

            decoratedBuilderMock.Setup(builder => builder.BuildUrl(actionName)).Returns("myRelativeUrl").Verifiable();

            /// Execute & Verify
            Assert.AreEqual(baseUrl + "myRelativeUrl", decorator.BuildUrl(actionName));

            decoratedBuilderMock.Verify();
        }
        public void ShouldDecorateUrlsToCreateAbsoluteURLs()
        {
            /// Setup
            DynamicMock decoratedBuilderMock = new DynamicMock(typeof(IUrlBuilder));
            string      baseUrl = "https://myserver:8080/myvdir";

            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.MockInstance, baseUrl);
            string actionName = "myAction";

            decoratedBuilderMock.ExpectAndReturn("BuildUrl", "myRelativeUrl", actionName);
            decoratedBuilderMock.ExpectAndReturn("BuildUrl", "myRelativeUrl2", actionName, "query");
            decoratedBuilderMock.ExpectAndReturn("BuildUrl", "myPath/myRelativeUrl3", actionName, "query", "myPath/");

            /// Execute & Verify
            Assert.AreEqual(baseUrl + "/myRelativeUrl", decorator.BuildUrl(actionName));
            Assert.AreEqual(baseUrl + "/myRelativeUrl2", decorator.BuildUrl(actionName, "query"));
            Assert.AreEqual(baseUrl + "/myPath/myRelativeUrl3", decorator.BuildUrl(actionName, "query", "myPath/"));

            decoratedBuilderMock.Verify();
        }
        public void ShouldDecorateUrlsToCreateAbsoluteURLs()
        {
            /// Setup
            var    decoratedBuilderMock = new Mock <IUrlBuilder>();
            string baseUrl = "https://myserver:8080/myvdir";

            AbsolutePathUrlBuilderDecorator decorator = new AbsolutePathUrlBuilderDecorator((IUrlBuilder)decoratedBuilderMock.Object, baseUrl);
            string actionName = "myAction";

            decoratedBuilderMock.Setup(builder => builder.BuildUrl(actionName)).Returns("myRelativeUrl").Verifiable();
            decoratedBuilderMock.Setup(builder => builder.BuildUrl(actionName, "query")).Returns("myRelativeUrl2").Verifiable();
            decoratedBuilderMock.Setup(builder => builder.BuildUrl(actionName, "query", "myPath/")).Returns("myPath/myRelativeUrl3").Verifiable();

            /// Execute & Verify
            Assert.AreEqual(baseUrl + "/myRelativeUrl", decorator.BuildUrl(actionName));
            Assert.AreEqual(baseUrl + "/myRelativeUrl2", decorator.BuildUrl(actionName, "query"));
            Assert.AreEqual(baseUrl + "/myPath/myRelativeUrl3", decorator.BuildUrl(actionName, "query", "myPath/"));

            decoratedBuilderMock.Verify();
        }