public void ExecuteWorksForLinkedSite()
        {
            var farmService   = this.mocks.StrictMock <IFarmService>();
            var viewGenerator = this.mocks.StrictMock <IVelocityViewGenerator>();
            var request       = this.mocks.StrictMock <ICruiseRequest>();
            var projectSpec   = this.mocks.StrictMock <IProjectSpecifier>();

            SetupResult.For(request.ProjectSpecifier).Return(projectSpec);
            SetupResult.For(request.ProjectName).Return("Test Project");
            SetupResult.For(request.RetrieveSessionToken()).Return(null);
            SetupResult.For(farmService.GetLinkedSiteId(projectSpec, null, "ohloh")).Return("1234567");
            Expect.Call(viewGenerator.GenerateView(null, null))
            .Callback <string, Hashtable>((n, ht) => {
                Assert.AreEqual("OhlohStats.vm", n);
                Assert.IsNotNull(ht);
                Assert.IsTrue(ht.ContainsKey("ohloh"));
                Assert.IsTrue(ht.ContainsKey("projectName"));
                Assert.AreEqual("1234567", ht["ohloh"]);
                Assert.AreEqual("Test Project", ht["projectName"]);
                return(true);
            })
            .Return(new HtmlFragmentResponse("from nVelocity"));

            this.mocks.ReplayAll();
            var plugin   = new OhlohProjectPlugin(farmService, viewGenerator);
            var response = plugin.Execute(request);

            this.mocks.VerifyAll();
            Assert.IsInstanceOf <HtmlFragmentResponse>(response);
            var actual = response as HtmlFragmentResponse;

            Assert.AreEqual("from nVelocity", actual.ResponseFragment);
        }
        public void ExecuteWorksForLinkedSite()
        {
            var farmService   = this.mocks.Create <IFarmService>(MockBehavior.Strict).Object;
            var viewGenerator = this.mocks.Create <IVelocityViewGenerator>(MockBehavior.Strict).Object;
            var request       = this.mocks.Create <ICruiseRequest>(MockBehavior.Strict).Object;
            var projectSpec   = this.mocks.Create <IProjectSpecifier>(MockBehavior.Strict).Object;

            Mock.Get(request).SetupGet(_request => _request.ProjectSpecifier).Returns(projectSpec);
            Mock.Get(request).SetupGet(_request => _request.ProjectName).Returns("Test Project");
            Mock.Get(request).Setup(_request => _request.RetrieveSessionToken()).Returns((string)null);
            Mock.Get(farmService).Setup(_farmService => _farmService.GetLinkedSiteId(projectSpec, null, "ohloh")).Returns("1234567");
            Mock.Get(viewGenerator).Setup(_viewGenerator => _viewGenerator.GenerateView(It.IsAny <string>(), It.IsAny <Hashtable>()))
            .Callback <string, Hashtable>((n, ht) => {
                Assert.AreEqual("OhlohStats.vm", n);
                Assert.IsNotNull(ht);
                Assert.IsTrue(ht.ContainsKey("ohloh"));
                Assert.IsTrue(ht.ContainsKey("projectName"));
                Assert.AreEqual("1234567", ht["ohloh"]);
                Assert.AreEqual("Test Project", ht["projectName"]);
            })
            .Returns(new HtmlFragmentResponse("from nVelocity")).Verifiable();

            var plugin   = new OhlohProjectPlugin(farmService, viewGenerator);
            var response = plugin.Execute(request);

            this.mocks.VerifyAll();
            Assert.IsInstanceOf <HtmlFragmentResponse>(response);
            var actual = response as HtmlFragmentResponse;

            Assert.AreEqual("from nVelocity", actual.ResponseFragment);
        }
        public void NamedActionsReturnedImmutableAction()
        {
            var plugin = new OhlohProjectPlugin(null, null);

            Assert.AreEqual(1, plugin.NamedActions.Length);
            Assert.IsInstanceOf <ImmutableNamedAction>(plugin.NamedActions[0]);
            Assert.AreEqual("ViewOhlohProjectStats", plugin.NamedActions[0].ActionName);
            Assert.AreSame(plugin, plugin.NamedActions[0].Action);
        }
        public void ExecuteWorksForNonLinkedSite()
        {
            var farmService   = this.mocks.Create <IFarmService>(MockBehavior.Strict).Object;
            var viewGenerator = this.mocks.Create <IVelocityViewGenerator>(MockBehavior.Strict).Object;
            var request       = this.mocks.Create <ICruiseRequest>(MockBehavior.Strict).Object;
            var projectSpec   = this.mocks.Create <IProjectSpecifier>(MockBehavior.Strict).Object;

            Mock.Get(request).SetupGet(_request => _request.ProjectSpecifier).Returns(projectSpec);
            Mock.Get(request).Setup(_request => _request.RetrieveSessionToken()).Returns((string)null);
            Mock.Get(farmService).Setup(_farmService => _farmService.GetLinkedSiteId(projectSpec, null, "ohloh")).Returns(string.Empty);

            var plugin   = new OhlohProjectPlugin(farmService, viewGenerator);
            var response = plugin.Execute(request);

            this.mocks.VerifyAll();
            Assert.IsInstanceOf <HtmlFragmentResponse>(response);
            var actual = response as HtmlFragmentResponse;

            Assert.AreEqual("<div>This project has not been linked to a project in Ohloh</div>", actual.ResponseFragment);
        }
        public void DescriptionIsCorrect()
        {
            var plugin = new OhlohProjectPlugin(null, null);

            Assert.AreEqual("View Ohloh Stats", plugin.LinkDescription);
        }