public void ExecuteWorksForNonLinkedSite()
        {
            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.RetrieveSessionToken()).Return(null);
            SetupResult.For(farmService.GetLinkedSiteId(projectSpec, null, "ohloh")).Return(string.Empty);

            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("<div>This project has not been linked to a project in Ohloh</div>", actual.ResponseFragment);
        }
        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);
        }