main
 1using System.Collections.Generic;
 2using MbUnit.Framework;
 3using Spec.Dox.Domain;
 4using Spec.Dox.Domain.Repositories;
 5using Spec.Dox.Presentation.Views;
 6using Spec.Dox.Test;
 7using Spec.Dox.Test.Extensions;
 8using Spec.Dox.Test.MetaData;
 9
10namespace Spec.Dox.Presentation.Presenters
11{
12    public interface ReportPresenterSpecs {}
13
14    [Concern(typeof (ReportPresenter))]
15    public class when_initializing_the_report_presenter : context_spec<IReportPresenter>
16    {
17        ITestContextRepository repository;
18        ITestContext context;
19        IHtmlReport view;
20        IList<ITestSpecification> specifications;
21        string[] args = new[] {"1", "2"};
22
23        protected override IReportPresenter EstablishContext()
24        {
25            repository = Dependency<ITestContextRepository>();
26            view = Dependency<IHtmlReport>();
27            context = Stub<ITestContext>();
28            specifications = new List<ITestSpecification>();
29
30            repository
31                .is_told_to(r => r.All("1"))
32                .Return(new List<ITestContext> {context});
33            context
34                .is_told_to(c => c.AllSpecifications())
35                .Return(specifications);
36
37            return new ReportPresenter(view, repository);
38        }
39
40        protected override void Because()
41        {
42            sut.Initialize(args);
43        }
44
45        [Test]
46        public void should_retrieve_each_of_the_specification_that_belong_to_the_context()
47        {
48            context.received(c => c.AllSpecifications());
49        }
50
51        [Test]
52        public void should_display_the_specification_for_each_context()
53        {
54            view.received(v => v.Add(context, specifications));
55        }
56
57        [Test]
58        public void should_generate_the_report()
59        {
60            view.received(v => v.publish_to_same_folder_as("1"));
61        }
62    }
63}