public ApplicationListingBodyView(IAdministratorSecurityChecker securityChecker, IApplicationInstanceRepository applicationInstanceRepository, IResourceFileLocator fileLocator, ITokenReplacer replacer, IApplicationListingRowView applicationListingRowView)
 {
     this.checker = securityChecker;
     this.applicationInstanceRepository = applicationInstanceRepository;
     this.fileLocator = fileLocator;
     this.replacer    = replacer;
     this.applicationListingRowView = applicationListingRowView;
 }
 public ApplicationListingBodyView(IAdministratorSecurityChecker securityChecker, IApplicationInstanceRepository applicationInstanceRepository, IResourceFileLocator fileLocator, ITokenReplacer replacer, IApplicationListingRowView applicationListingRowView)
 {
     this.checker = securityChecker;
     this.applicationInstanceRepository = applicationInstanceRepository;
     this.fileLocator = fileLocator;
     this.replacer = replacer;
     this.applicationListingRowView = applicationListingRowView;
 }
        public void Correctly_returns_html_for_page_for_an_administrator()
        {
            List <ApplicationInstance> applicationList = new List <ApplicationInstance>();

            //application group 1
            applicationList.Add(new ApplicationInstance());
            applicationList[0].MaintenanceHostHeader = "1";
            applicationList.Add(new ApplicationInstance());
            applicationList[1].MaintenanceHostHeader = "1";

            //application group 2
            applicationList.Add(new ApplicationInstance());
            applicationList[2].MaintenanceHostHeader = "2";
            applicationList.Add(new ApplicationInstance());
            applicationList[3].MaintenanceHostHeader = "2";

            MockRepository mocks = new MockRepository();
            IApplicationInstanceRepository repository  = mocks.CreateMock <IApplicationInstanceRepository>();
            IResourceFileLocator           fileLocator = mocks.CreateMock <IResourceFileLocator>();
            ITokenReplacer replacer = mocks.CreateMock <ITokenReplacer>();
            IAdministratorSecurityChecker securityChecker           = mocks.CreateMock <IAdministratorSecurityChecker>();
            IApplicationListingRowView    applicationListingRowView = mocks.CreateMock <IApplicationListingRowView>();

            using (mocks.Record())
            {
                Expect.Call(securityChecker.IsCurrentUserAdministrator()).Return(true);

                Expect.Call(repository.GetAll()).Return(applicationList);
                Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.BodyTemplate)).Return("body template");
                replacer.Text = "body template";
                Expect.Call(applicationListingRowView.BuildFirstRowHtml(applicationList[0], 2)).Return("1");
                Expect.Call(applicationListingRowView.BuildMRowHtml(applicationList[1])).Return("2");
                Expect.Call(applicationListingRowView.BuildFirstRowHtml(applicationList[2], 2)).Return("3");
                Expect.Call(applicationListingRowView.BuildMRowHtml(applicationList[3])).Return("4");
                replacer.Replace("ROWS", "1234");
                Expect.Call(replacer.Text).Return("formatted HTML");
            }

            using (mocks.Playback())
            {
                IApplicationListingBodyView view = new ApplicationListingBodyView(securityChecker, repository, fileLocator, replacer, applicationListingRowView);
                string html = view.BuildHtml();
                Assert.That(html, Is.EqualTo("formatted HTML"));
            }

            mocks.VerifyAll();
        }