Exemple #1
0
        public void Setup()
        {
            cruiseRequestMock         = new DynamicMock(typeof(ICruiseRequest));
            requestMock               = new DynamicMock(typeof(IRequest));
            linkFactoryMock           = new DynamicMock(typeof(ILinkFactory));
            velocityViewGeneratorMock = new DynamicMock(typeof(IVelocityViewGenerator));
            farmServiceMock           = new DynamicMock(typeof(IFarmService));

            viewBuilder = new TopControlsViewBuilder(
                (ICruiseRequest)cruiseRequestMock.MockInstance,
                (ILinkFactory)linkFactoryMock.MockInstance,
                (IVelocityViewGenerator)velocityViewGeneratorMock.MockInstance,
                (IFarmService)farmServiceMock.MockInstance,
                null, null);

            serverSpecifier         = new DefaultServerSpecifier("myServer");
            projectSpecifier        = new DefaultProjectSpecifier(serverSpecifier, "myProject");
            buildSpecifier          = new DefaultBuildSpecifier(projectSpecifier, "myBuild");
            expectedVelocityContext = new Hashtable();
            response = new HtmlFragmentResponse("foo");
            link1    = new GeneralAbsoluteLink("1");
            link2    = new GeneralAbsoluteLink("2");
            link3    = new GeneralAbsoluteLink("3");
            link4    = new GeneralAbsoluteLink("4");
        }
 public void Setup()
 {
     urlBuilderMock   = new DynamicMock(typeof(IUrlBuilder));
     serverSpecifier  = new DefaultServerSpecifier("myserver");
     projectSpecifier = new DefaultProjectSpecifier(serverSpecifier, "myproject");
     buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "mybuild");
     cruiseUrlBuilder = new DefaultCruiseUrlBuilder((IUrlBuilder)urlBuilderMock.MockInstance);
 }
 public void Setup()
 {
     urlBuilderMock   = new Mock <IUrlBuilder>();
     serverSpecifier  = new DefaultServerSpecifier("myserver");
     projectSpecifier = new DefaultProjectSpecifier(serverSpecifier, "myproject");
     buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "mybuild");
     cruiseUrlBuilder = new DefaultCruiseUrlBuilder((IUrlBuilder)urlBuilderMock.Object);
 }
Exemple #4
0
        public void Setup()
        {
            cruiseManagerWrapperMock = new Mock <ICruiseManagerWrapper>();

            serverQueryingBuildRetriever = new ServerQueryingBuildRetriever(((ICruiseManagerWrapper)cruiseManagerWrapperMock.Object));

            buildSpecifier = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("s"), "p"), "myBuild");
            logContent     = "log Content";
        }
        public void Setup()
        {
            cruiseManagerWrapperMock = new DynamicMock(typeof(ICruiseManagerWrapper));

            serverQueryingBuildRetriever = new ServerQueryingBuildRetriever(((ICruiseManagerWrapper)cruiseManagerWrapperMock.MockInstance));

            buildSpecifier = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("s"), "p"), "myBuild");
            logContent     = "log Content";
        }
Exemple #6
0
 public override bool Equals(object obj)
 {
     if (obj is DefaultBuildSpecifier)
     {
         DefaultBuildSpecifier other = obj as DefaultBuildSpecifier;
         return(this.BuildName == other.BuildName && this.ProjectSpecifier.Equals(other.ProjectSpecifier));
     }
     return(false);
 }
        public void Setup()
        {
            cruiseManagerWrapperMock = new Mock <ICruiseManagerWrapper>();

            nameBuildRetriever = new CruiseManagerBuildNameRetriever((ICruiseManagerWrapper)cruiseManagerWrapperMock.Object);

            serverName       = "my Server";
            projectName      = "my Project";
            buildName        = "myLogfile.xml";
            projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier(serverName), projectName);
            buildSpecifier   = new DefaultBuildSpecifier(this.projectSpecifier, buildName);
            buildSpecifiers  = new IBuildSpecifier[] { CreateBuildSpecifier("log3"), CreateBuildSpecifier("log2"), CreateBuildSpecifier("log1") };
        }
Exemple #8
0
        public void ShouldReturnRedirectToActualBuildReportPageIfBuildAvailable()
        {
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            IBuildSpecifier   buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "myBuild");

            cruiseRequestMock.SetupGet(_request => _request.ProjectSpecifier).Returns(projectSpecifier).Verifiable();
            farmServiceMock.Setup(services => services.GetMostRecentBuildSpecifiers(projectSpecifier, 1, null)).Returns(new IBuildSpecifier[] { buildSpecifier }).Verifiable();
            linkFactoryMock.Setup(factory => factory.CreateBuildLink(buildSpecifier, BuildReportBuildPlugin.ACTION_NAME)).Returns(new GeneralAbsoluteLink("foo", "buildUrl")).Verifiable();

            IResponse returnedReponse = plugin.Execute(cruiseRequest);

            Assert.IsTrue(returnedReponse is RedirectResponse);
            Assert.AreEqual("buildUrl", ((RedirectResponse)returnedReponse).Url);
        }
        public void ShouldReturnRedirectToActualBuildReportPageIfBuildAvailable()
        {
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            IBuildSpecifier   buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "myBuild");

            cruiseRequestMock.ExpectAndReturn("ProjectSpecifier", projectSpecifier);
            farmServiceMock.ExpectAndReturn("GetMostRecentBuildSpecifiers", new IBuildSpecifier[] { buildSpecifier }, projectSpecifier, 1, null);
            linkFactoryMock.ExpectAndReturn("CreateBuildLink", new GeneralAbsoluteLink("foo", "buildUrl"), buildSpecifier, BuildReportBuildPlugin.ACTION_NAME);

            IResponse returnedReponse = plugin.Execute(cruiseRequest);

            Assert.IsTrue(returnedReponse is RedirectResponse);
            Assert.AreEqual("buildUrl", ((RedirectResponse)returnedReponse).Url);
        }
Exemple #10
0
        public void ShouldGenerateBuildViewIfServerAndProjectAndBuildSpecified()
        {
            // Setup
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            IBuildSpecifier   buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "myBuild");

            cruiseRequestWrapperMock.SetupGet(_cruiseRequest => _cruiseRequest.ServerName).Returns("myServer").Verifiable();
            cruiseRequestWrapperMock.SetupGet(_cruiseRequest => _cruiseRequest.ProjectName).Returns("myProject").Verifiable();
            cruiseRequestWrapperMock.SetupGet(_cruiseRequest => _cruiseRequest.BuildName).Returns("myBuild").Verifiable();
            cruiseRequestWrapperMock.SetupGet(_cruiseRequest => _cruiseRequest.BuildSpecifier).Returns(buildSpecifier).Verifiable();
            cruiseRequestWrapperMock.SetupGet(_cruiseRequest => _cruiseRequest.ProjectSpecifier).Returns(projectSpecifier).Verifiable();

            pluginLinkCalculatorMock.Setup(calculator => calculator.GetBuildPluginLinks(buildSpecifier)).Returns(links).Verifiable();
            string recentBuildsView = "";

            recentBuildsViewBuilderMock.Setup(builder => builder.BuildRecentBuildsTable(buildSpecifier, null)).Returns(recentBuildsView).Verifiable();

            IBuildSpecifier nextBuildSpecifier     = new DefaultBuildSpecifier(projectSpecifier, "next");
            IBuildSpecifier previousBuildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "previous");
            IAbsoluteLink   latestLink             = new GeneralAbsoluteLink("test latest");
            IAbsoluteLink   nextLink     = new GeneralAbsoluteLink("test next");
            IAbsoluteLink   previousLink = new GeneralAbsoluteLink("test previous");

            buildNameRetrieverMock.Setup(retriever => retriever.GetNextBuildSpecifier(buildSpecifier, null)).Returns(nextBuildSpecifier).Verifiable();
            buildNameRetrieverMock.Setup(retriever => retriever.GetPreviousBuildSpecifier(buildSpecifier, null)).Returns(previousBuildSpecifier).Verifiable();

            string action = BuildReportBuildPlugin.ACTION_NAME;

            linkFactoryMock.Setup(factory => factory.CreateProjectLink(projectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME)).Returns(latestLink).Verifiable();
            linkFactoryMock.Setup(factory => factory.CreateBuildLink(nextBuildSpecifier, "", action)).Returns(nextLink).Verifiable();
            linkFactoryMock.Setup(factory => factory.CreateBuildLink(previousBuildSpecifier, "", action)).Returns(previousLink).Verifiable();

            velocityContext["links"]             = links;
            velocityContext["recentBuildsTable"] = recentBuildsView;
            velocityContext["latestLink"]        = latestLink;
            velocityContext["nextLink"]          = nextLink;
            velocityContext["previousLink"]      = previousLink;

            velocityViewGeneratorMock.Setup(generator => generator.GenerateView(@"BuildSideBar.vm", It.IsAny <Hashtable>())).
            Callback <string, Hashtable>((name, context) => Assert.AreEqual(context, velocityContext)).Returns(velocityResponse).Verifiable();

            // Execute
            HtmlFragmentResponse returnedResponse = sideBarViewBuilder.Execute(cruiseRequestWrapperMock.Object as ICruiseRequest);

            // Verify
            Assert.AreEqual(velocityResponse, returnedResponse);
            VerifyAll();
        }
        public void ShouldGenerateBuildViewIfServerAndProjectAndBuildSpecified()
        {
            // Setup
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            IBuildSpecifier   buildSpecifier   = new DefaultBuildSpecifier(projectSpecifier, "myBuild");

            cruiseRequestWrapperMock.ExpectAndReturn("ServerName", "myServer");
            cruiseRequestWrapperMock.ExpectAndReturn("ProjectName", "myProject");
            cruiseRequestWrapperMock.ExpectAndReturn("BuildName", "myBuild");
            cruiseRequestWrapperMock.ExpectAndReturn("BuildSpecifier", buildSpecifier);
            cruiseRequestWrapperMock.ExpectAndReturn("ProjectSpecifier", projectSpecifier);

            pluginLinkCalculatorMock.ExpectAndReturn("GetBuildPluginLinks", links, buildSpecifier);
            string recentBuildsView = "";

            recentBuildsViewBuilderMock.ExpectAndReturn("BuildRecentBuildsTable", recentBuildsView, buildSpecifier, null);

            IBuildSpecifier nextBuildSpecifier     = new DefaultBuildSpecifier(projectSpecifier, "next");
            IBuildSpecifier previousBuildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "previous");
            IAbsoluteLink   latestLink             = new GeneralAbsoluteLink("test latest");
            IAbsoluteLink   nextLink     = new GeneralAbsoluteLink("test next");
            IAbsoluteLink   previousLink = new GeneralAbsoluteLink("test previous");

            buildNameRetrieverMock.ExpectAndReturn("GetNextBuildSpecifier", nextBuildSpecifier, buildSpecifier, null);
            buildNameRetrieverMock.ExpectAndReturn("GetPreviousBuildSpecifier", previousBuildSpecifier, buildSpecifier, null);

            string action = BuildReportBuildPlugin.ACTION_NAME;

            linkFactoryMock.ExpectAndReturn("CreateProjectLink", latestLink, projectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME);
            linkFactoryMock.ExpectAndReturn("CreateBuildLink", nextLink, nextBuildSpecifier, "", action);
            linkFactoryMock.ExpectAndReturn("CreateBuildLink", previousLink, previousBuildSpecifier, "", action);

            velocityContext["links"]             = links;
            velocityContext["recentBuildsTable"] = recentBuildsView;
            velocityContext["latestLink"]        = latestLink;
            velocityContext["nextLink"]          = nextLink;
            velocityContext["previousLink"]      = previousLink;

            velocityViewGeneratorMock.ExpectAndReturn("GenerateView", velocityResponse, @"BuildSideBar.vm", new HashtableConstraint(velocityContext));

            // Execute
            HtmlFragmentResponse returnedResponse = sideBarViewBuilder.Execute(cruiseRequestWrapperMock.MockInstance as ICruiseRequest);

            // Verify
            Assert.AreEqual(velocityResponse, returnedResponse);
            VerifyAll();
        }
        public void Setup()
        {
            buildRetrieverMock        = new DynamicMock(typeof(IBuildRetriever));
            velocityViewGeneratorMock = new DynamicMock(typeof(IVelocityViewGenerator));
            urlBuilderMock            = new DynamicMock(typeof(ICruiseUrlBuilder));
            requestMock            = new DynamicMock(typeof(ICruiseRequest));
            fingerprintFactoryMock = new DynamicMock(typeof(IFingerprintFactory));

            buildLogAction = new HtmlBuildLogAction((IBuildRetriever)buildRetrieverMock.MockInstance,
                                                    (IVelocityViewGenerator)velocityViewGeneratorMock.MockInstance,
                                                    (ICruiseUrlBuilder)urlBuilderMock.MockInstance,
                                                    (IFingerprintFactory)fingerprintFactoryMock.MockInstance,
                                                    null);

            buildLog       = "some stuff in a log with a < and >";
            buildSpecifier = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("myserver"), "myproject"), "mybuild");
            build          = new Build(buildSpecifier, buildLog);
            response       = new HtmlFragmentResponse("foo");
        }
Exemple #13
0
        public void Setup()
        {
            serverSpecifier   = new DefaultServerSpecifier(serverName);
            projectSpecifier  = new DefaultProjectSpecifier(serverSpecifier, projectName);
            buildSpecifier    = new DefaultBuildSpecifier(projectSpecifier, buildName);
            linkFactoryMock   = new DynamicMock(typeof(ILinkFactory));
            configurationMock = new DynamicMock(typeof(IPluginConfiguration));
            Plugins           = new DefaultPluginLinkCalculator((ILinkFactory)linkFactoryMock.MockInstance, (IPluginConfiguration)configurationMock.MockInstance);

            pluginMock1 = new DynamicMock(typeof(IPlugin));
            pluginMock2 = new DynamicMock(typeof(IPlugin));
            action1     = new ImmutableNamedAction("Action Name 1", null);
            action2     = new ImmutableNamedAction("Action Name 2", null);
            action3     = new ImmutableNamedAction("Action Name 3", null);
            pluginMock1.ExpectAndReturn("LinkDescription", "Description 1");
            pluginMock1.ExpectAndReturn("NamedActions", new INamedAction[] { action1 });
            pluginMock2.ExpectAndReturn("LinkDescription", "Description 2");
            pluginMock2.ExpectAndReturn("NamedActions", new INamedAction[] { action2 });
            link1 = (IAbsoluteLink) new DynamicMock(typeof(IAbsoluteLink)).MockInstance;
            link2 = (IAbsoluteLink) new DynamicMock(typeof(IAbsoluteLink)).MockInstance;
        }
        public void Setup()
        {
            serverSpecifier   = new DefaultServerSpecifier(serverName);
            projectSpecifier  = new DefaultProjectSpecifier(serverSpecifier, projectName);
            buildSpecifier    = new DefaultBuildSpecifier(projectSpecifier, buildName);
            linkFactoryMock   = new Mock <ILinkFactory>();
            configurationMock = new Mock <IPluginConfiguration>();
            Plugins           = new DefaultPluginLinkCalculator((ILinkFactory)linkFactoryMock.Object, (IPluginConfiguration)configurationMock.Object);

            pluginMock1 = new Mock <IPlugin>();
            pluginMock2 = new Mock <IPlugin>();
            action1     = new ImmutableNamedAction("Action Name 1", null);
            action2     = new ImmutableNamedAction("Action Name 2", null);
            action3     = new ImmutableNamedAction("Action Name 3", null);
            pluginMock1.SetupGet(plugin => plugin.LinkDescription).Returns("Description 1").Verifiable();
            pluginMock1.SetupGet(plugin => plugin.NamedActions).Returns(new INamedAction[] { action1 }).Verifiable();
            pluginMock2.SetupGet(plugin => plugin.LinkDescription).Returns("Description 2").Verifiable();
            pluginMock2.SetupGet(plugin => plugin.NamedActions).Returns(new INamedAction[] { action2 }).Verifiable();
            link1 = (IAbsoluteLink) new Mock <IAbsoluteLink>().Object;
            link2 = (IAbsoluteLink) new Mock <IAbsoluteLink>().Object;
        }
Exemple #15
0
        public void ShouldGetBuildLogAndReturnResultOfDelegateTransformer()
        {
            DynamicMock buildRetrieverMock      = new DynamicMock(typeof(IBuildRetriever));
            DynamicMock delegateTransformerMock = new DynamicMock(typeof(IMultiTransformer));

            BuildRequestTransformer requestTransformer = new BuildRequestTransformer((IBuildRetriever)buildRetrieverMock.MockInstance, (IMultiTransformer)delegateTransformerMock.MockInstance);

            DefaultBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject"), "myBuild");

            Build build = new Build(buildSpecifier, "logContents");

            buildRetrieverMock.ExpectAndReturn("GetBuild", build, buildSpecifier, null);

            string[] fileNames = new string[] { "file1", "file2" };

            delegateTransformerMock.ExpectAndReturn("Transform", "transformed", "logContents", fileNames, null);

            Assert.AreEqual("transformed", requestTransformer.Transform(buildSpecifier, fileNames, null, null));

            buildRetrieverMock.Verify();
            delegateTransformerMock.Verify();
        }
Exemple #16
0
        public void ShouldGetBuildLogAndReturnResultOfDelegateTransformer()
        {
            var buildRetrieverMock      = new Mock <IBuildRetriever>();
            var delegateTransformerMock = new Mock <IMultiTransformer>();

            BuildRequestTransformer requestTransformer = new BuildRequestTransformer((IBuildRetriever)buildRetrieverMock.Object, (IMultiTransformer)delegateTransformerMock.Object);

            DefaultBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject"), "myBuild");

            Build build = new Build(buildSpecifier, "logContents");

            buildRetrieverMock.Setup(retriever => retriever.GetBuild(buildSpecifier, null)).Returns(build).Verifiable();

            string[] fileNames = new string[] { "file1", "file2" };

            delegateTransformerMock.Setup(transformer => transformer.Transform("logContents", fileNames, null)).Returns("transformed").Verifiable();

            Assert.AreEqual("transformed", requestTransformer.Transform(buildSpecifier, fileNames, null, null));

            buildRetrieverMock.Verify();
            delegateTransformerMock.Verify();
        }
        public void ExecuteWorksForDataRequest()
        {
            var url1          = "build/1";
            var url2          = "build/2";
            var appPath       = "/";
            var farmService   = this.mocks.StrictMock <IFarmService>();
            var viewGenerator = this.mocks.StrictMock <IVelocityViewGenerator>();
            var urlBuilder    = this.mocks.StrictMock <ICruiseUrlBuilder>();
            var cruiseRequest = this.mocks.StrictMock <ICruiseRequest>();
            var request       = this.mocks.StrictMock <IRequest>();
            var projectSpec   = this.mocks.StrictMock <IProjectSpecifier>();
            var build1        = new DefaultBuildSpecifier(projectSpec, "log20100406071725Lbuild.1.xml");
            var build2        = new DefaultBuildSpecifier(projectSpec, "log20100406071725.xml");
            var builds        = new IBuildSpecifier[] { build1, build2 };

            SetupResult.For(cruiseRequest.Request).Return(request);
            SetupResult.For(cruiseRequest.ProjectSpecifier).Return(projectSpec);
            SetupResult.For(cruiseRequest.RetrieveSessionToken()).Return(null);
            SetupResult.For(request.FileNameWithoutExtension).Return(ProjectTimelineAction.DataActionName);
            SetupResult.For(request.ApplicationPath).Return(appPath);
            SetupResult.For(farmService.GetBuildSpecifiers(projectSpec, null)).Return(builds);
            SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build1)).Return(url1);
            SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build2)).Return(url2);

            this.mocks.ReplayAll();
            var plugin   = new ProjectTimelineAction(viewGenerator, farmService, urlBuilder);
            var response = plugin.Execute(cruiseRequest);

            this.mocks.VerifyAll();
            Assert.IsInstanceOf <XmlFragmentResponse>(response);
            var actual   = response as XmlFragmentResponse;
            var expected = "<data>" +
                           "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Success (1)\" color=\"green\" icon=\"/javascript/Timeline/images/dark-green-circle.png\">&lt;a href=\"build/1\"&gt;View Build&lt;/a&gt;</event>" +
                           "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Failure\" color=\"red\" icon=\"/javascript/Timeline/images/dark-red-circle.png\">&lt;a href=\"build/2\"&gt;View Build&lt;/a&gt;</event>" +
                           "</data>";

            Assert.AreEqual(expected, actual.ResponseFragment);
        }
Exemple #18
0
        public void Setup()
        {
            farmServiceMock           = new Mock <IFarmService>();
            velocityTransformerMock   = new Mock <IVelocityTransformer>();
            velocityViewGeneratorMock = new Mock <IVelocityViewGenerator>();
            linkFactoryMock           = new Mock <ILinkFactory>();
            linkListFactoryMock       = new Mock <ILinkListFactory>();
            fingerprintFactoryMock    = new Mock <IFingerprintFactory>();
            urlBuilderMock            = new Mock <ICruiseUrlBuilder>();

            lister = new RecentBuildLister(
                (IFarmService)farmServiceMock.Object,
                (IVelocityTransformer)velocityTransformerMock.Object,
                (IVelocityViewGenerator)velocityViewGeneratorMock.Object,
                (ILinkFactory)linkFactoryMock.Object,
                (ILinkListFactory)linkListFactoryMock.Object,
                (IFingerprintFactory)fingerprintFactoryMock.Object,
                (ICruiseUrlBuilder)urlBuilderMock.Object,
                null);

            projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            build2Specifier  = new DefaultBuildSpecifier(projectSpecifier, "log20070401013456.xml");
            build1Specifier  = new DefaultBuildSpecifier(projectSpecifier, "build1");
        }
        public void Setup()
        {
            configurationMock              = new Mock <IRemoteServicesConfiguration>();
            cruiseManagerFactoryMock       = new Mock <ICruiseServerClientFactory>();
            cruiseManagerMock              = new Mock <ICruiseServerClient>();
            serverSpecifier                = new DefaultServerSpecifier("myserver");
            projectSpecifier               = new DefaultProjectSpecifier(serverSpecifier, "myproject");
            buildSpecifier                 = new DefaultBuildSpecifier(projectSpecifier, "mybuild");
            buildSpecifierForUnknownServer = new DefaultBuildSpecifier(new DefaultProjectSpecifier(new DefaultServerSpecifier("unknownServer"), "myProject"), "myBuild");

            managerWrapper = new ServerAggregatingCruiseManagerWrapper(
                (IRemoteServicesConfiguration)configurationMock.Object,
                (ICruiseServerClientFactory)cruiseManagerFactoryMock.Object
                );

            serverLocation                 = new ServerLocation();
            serverLocation.Name            = "myserver";
            serverLocation.Url             = "http://myurl";
            serverLocation.AllowForceBuild = true;

            otherServerLocation      = new ServerLocation();
            otherServerLocation.Name = "myotherserver";
            otherServerLocation.Url  = "http://myotherurl";
        }
        public void ShouldGetProjectDetailsAndUseCorrectTemplate()
        {
            // Setup
            ExternalLink[]    links            = new ExternalLink[] { new ExternalLink("foo", "bar") };
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            //IBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "myBuild");
            IBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "log20050818103522Lbuild.0.0.0.9.xml");

            Hashtable expectedContext = new Hashtable();

            DynamicMock requestStub = new DynamicMock(typeof(IRequest));
            IRequest    request     = (IRequest)requestStub.MockInstance;

            cruiseRequestMock.SetupResult("Request", request);
            requestStub.SetupResult("ApplicationPath", "myAppPath");

            farmServiceMock.ExpectAndReturn("GetRSSFeed", "", projectSpecifier);

            expectedContext["projectName"]        = "myProject";
            expectedContext["externalLinks"]      = links;
            expectedContext["noLogsAvailable"]    = false;
            expectedContext["mostRecentBuildUrl"] = "buildUrl";

            expectedContext["applicationPath"] = "myAppPath";
            expectedContext["rssDataPresent"]  = false;
            expectedContext["rss"]             = new GeneralAbsoluteLink("RSS", @"http://localhost/myServer");


            IResponse response = new HtmlFragmentResponse("myView");

            cruiseRequestMock.ExpectAndReturn("ProjectSpecifier", projectSpecifier);
            cruiseRequestMock.ExpectAndReturn("ProjectSpecifier", projectSpecifier);
            farmServiceMock.ExpectAndReturn("GetMostRecentBuildSpecifiers", new IBuildSpecifier[] { buildSpecifier }, projectSpecifier, 1, null);
            farmServiceMock.ExpectAndReturn("GetExternalLinks", links, projectSpecifier, null);
            linkFactoryMock.ExpectAndReturn("CreateProjectLink", new GeneralAbsoluteLink("foo", "buildUrl"), projectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME);

            linkFactoryMock.ExpectAndReturn("CreateProjectLink", new GeneralAbsoluteLink("RSS", @"myServer"), projectSpecifier, ThoughtWorks.CruiseControl.WebDashboard.Plugins.RSS.RSSFeed.ACTION_NAME);


            farmServiceMock.ExpectAndReturn("GetMostRecentBuildSpecifiers", new IBuildSpecifier[] { buildSpecifier }, projectSpecifier, ProjectReportProjectPlugin.AmountOfBuildsToRetrieve, null);
            expectedContext["graphDayInfo"] = new NMock.Constraints.IsTypeOf(typeof(ArrayList));

            expectedContext["highestAmountPerDay"] = 1;
            expectedContext["dateMultiPlier"]      = 1;

            expectedContext["OKPercent"]  = 100;
            expectedContext["NOKPercent"] = 0;

            expectedContext["server"]                     = new DefaultServerSpecifier("myServer");
            expectedContext["StatusMessage"]              = string.Empty;
            expectedContext["status"]                     = null;
            expectedContext["StartStopButtonName"]        = "StartBuild";
            expectedContext["StartStopButtonValue"]       = "Start";
            expectedContext["ForceAbortBuildButtonName"]  = "ForceBuild";
            expectedContext["ForceAbortBuildButtonValue"] = "Force";

            viewGeneratorMock.ExpectAndReturn("GenerateView", response, @"ProjectReport.vm", new HashtableConstraint(expectedContext));


            // Execute
            IResponse returnedResponse = plugin.Execute(cruiseRequest);

            // Verify
            Assert.AreEqual(response, returnedResponse);
            VerifyAll();
        }
        public void ShouldGetProjectDetailsAndUseCorrectTemplate()
        {
            // Setup
            ExternalLink[]    links            = new ExternalLink[] { new ExternalLink("foo", "bar") };
            IProjectSpecifier projectSpecifier = new DefaultProjectSpecifier(new DefaultServerSpecifier("myServer"), "myProject");
            //IBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "myBuild");
            IBuildSpecifier buildSpecifier = new DefaultBuildSpecifier(projectSpecifier, "log20050818103522Lbuild.0.0.0.9.xml");

            Hashtable expectedContext = new Hashtable();

            var      requestStub = new Mock <IRequest>();
            IRequest request     = (IRequest)requestStub.Object;

            cruiseRequestMock.SetupGet(r => r.Request).Returns(request);
            requestStub.SetupGet(r => r.ApplicationPath).Returns("myAppPath");

            farmServiceMock.Setup(service => service.GetRSSFeed(projectSpecifier, It.IsAny <string>())).Returns("").Verifiable();

            expectedContext["projectName"]        = "myProject";
            expectedContext["externalLinks"]      = links;
            expectedContext["noLogsAvailable"]    = false;
            expectedContext["mostRecentBuildUrl"] = "buildUrl";

            expectedContext["applicationPath"] = "myAppPath";
            expectedContext["rssDataPresent"]  = false;
            expectedContext["rss"]             = new GeneralAbsoluteLink("RSS", @"http://localhost/myServer");


            HtmlFragmentResponse response = new HtmlFragmentResponse("myView");

            cruiseRequestMock.SetupGet(r => r.ProjectSpecifier).Returns(projectSpecifier).Verifiable();
            farmServiceMock.Setup(service => service.GetMostRecentBuildSpecifiers(projectSpecifier, 1, null)).Returns(new IBuildSpecifier[] { buildSpecifier }).Verifiable();
            farmServiceMock.Setup(service => service.GetExternalLinks(projectSpecifier, null)).Returns(links).Verifiable();
            linkFactoryMock.Setup(factory => factory.CreateProjectLink(projectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME)).Returns(new GeneralAbsoluteLink("foo", "buildUrl")).Verifiable();
            linkFactoryMock.Setup(factory => factory.CreateProjectLink(projectSpecifier, ThoughtWorks.CruiseControl.WebDashboard.Plugins.RSS.RSSFeed.ACTION_NAME)).Returns(new GeneralAbsoluteLink("RSS", @"myServer")).Verifiable();


            farmServiceMock.Setup(service => service.GetMostRecentBuildSpecifiers(projectSpecifier, ProjectReportProjectPlugin.AmountOfBuildsToRetrieve, null)).Returns(new IBuildSpecifier[] { buildSpecifier }).Verifiable();
            expectedContext["graphDayInfo"] = new ArrayList();

            expectedContext["highestAmountPerDay"] = 1;
            expectedContext["dateMultiPlier"]      = 1;

            expectedContext["OKPercent"]  = 100;
            expectedContext["NOKPercent"] = 0;

            expectedContext["server"]                     = new DefaultServerSpecifier("myServer");
            expectedContext["StatusMessage"]              = string.Empty;
            expectedContext["status"]                     = null;
            expectedContext["StartStopButtonName"]        = "StartBuild";
            expectedContext["StartStopButtonValue"]       = "Start";
            expectedContext["ForceAbortBuildButtonName"]  = "ForceBuild";
            expectedContext["ForceAbortBuildButtonValue"] = "Force";

            viewGeneratorMock.Setup(generator => generator.GenerateView(@"ProjectReport.vm", It.IsAny <Hashtable>())).
            Callback <string, Hashtable>((name, context) => Assert.AreEqual(context, expectedContext)).Returns(response).Verifiable();


            // Execute
            IResponse returnedResponse = plugin.Execute(cruiseRequest);

            // Verify
            Assert.AreEqual(response, returnedResponse);
            VerifyAll();
        }