using System.Web.Mvc; using Moq; using NUnit.Framework; using Website; using Website.Controllers; namespace UnitTests.Controllers { [TestFixture] public class RedirectsControllerTests { [Test] public void RedirectByPath_redirects_for_valid_redirect_path() { var repository = new Mock(); repository.Expect(r => r.GetRedirectUrlByPath("/test")) .Returns("/success").Verifiable(); var controller = new RedirectsController(repository.Object); var result = controller.RedirectByPath("/test") as RedirectResult; Assert.That(result.Url.Equals("/success")); } [Test] public void RedirectByPath_goes_to_404_page_for_invalid_redirect_path() { var repository = new Mock(); repository.Expect(r => r.GetRedirectUrlByPath("/invalid")) .Returns((string)null).Verifiable(); var controller = new RedirectsController(repository.Object); var result = controller.RedirectByPath("/invalid") as RedirectResult; Assert.That(result.Url.Equals("/error/404")); } [Test] public void RedirectByCode_redirects_for_valid_redirect_code() { var repository = new Mock(); repository.Expect(r => r.GetRedirectUrlByCode("TEST")) .Returns("/success").Verifiable(); var controller = new RedirectsController(repository.Object); var result = controller.RedirectByCode("TEST") as RedirectResult; Assert.That(result.Url.Equals("/success")); } [Test] public void RedirectByCode_goes_to_404_page_for_invalid_redirect_code() { var repository = new Mock(); repository.Expect(r => r.GetRedirectUrlByCode("invalid")) .Returns((string)null).Verifiable(); var controller = new RedirectsController(repository.Object); var result = controller.RedirectByCode("invalid") as RedirectResult; Assert.That(result.Url.Equals("/error/404")); } } }