public void Statement_unknown_playtype_should_throw_exception()
        {
            const string invalidPlayId = "invalid";
            var          plays         = new PlaysBuilder()
                                         .WithPlay(invalidPlayId, (PlayType)99)
                                         .Build();
            var invoice = new InvoiceBuilder()
                          .WithPerformance(invalidPlayId, 1)
                          .Build();
            var generator = new BillGenerator();

            Action act = () => generator.Statement(invoice, plays);

            act.Should().Throw <Exception>().WithMessage("unknown type: 99");
        }
        public void RenderPlainTextTest()
        {
            var plays = new PlaysBuilder().Build();


            var invoice = new InvoiceBuilder()
                          .ForCustomer("BigCo")
                          .WithPerformance("hamlet", 55)
                          .WithPerformance("as-like", 35)
                          .WithPerformance("othello", 40)
                          .Build();

            var generator = new BillGenerator();

            var statement = generator.Statement(invoice, plays);


            statement.Should().Be(@"Statement for BigCo
  Hamlet: $650.00 (55 seats)
  As You Like It: $580.00 (35 seats)
  Othello: $500.00 (40 seats)
Amount owed is $1,660.80
You earned 47 credits");
        }