Beispiel #1
0
 public void Cancel(string reason)
 {
     if (_cancelled)
     {
         throw new InvalidOperationException("The concert has already been cancelled.");
     }
     Apply(ConcertEvents.Cancelled(_id, reason));
 }
Beispiel #2
0
            public void ConcertIsPlannedWithIdAndValidCapacity()
            {
                var id = new ConcertId(Guid.NewGuid());

                new ConstructorScenarioFor <Concert>(() => Concert.Plan(id, 100)).
                Then(ConcertEvents.Planned(id)).
                Assert();
            }
Beispiel #3
0
 public void CancelledConcertCanNotBeCancelled()
 {
     new CommandScenarioFor <Concert>(Concert.Factory).
     Given(
         ConcertEvents.Planned(ConcertId),
         ConcertEvents.Cancelled(ConcertId, "Guitars all smashed.")).
     When(sut => sut.Cancel("Lead singer OD'ed.")).
     AssertThrows(new InvalidOperationException("The concert has already been cancelled."));
 }
Beispiel #4
0
 public void PlannedConcertCanBeCancelled()
 {
     new CommandScenarioFor <Concert>(Concert.Factory).
     Given(
         ConcertEvents.Planned(ConcertId)).
     When(sut => sut.Cancel("Lead singer OD'ed.")).
     Then(
         ConcertEvents.Cancelled(ConcertId, "Lead singer OD'ed.")).
     Assert();
 }
Beispiel #5
0
 public void CancelledConcertCanNotStartTicketSale()
 {
     new FactoryScenarioFor <Concert>(Concert.Factory).
     Given(
         ConcertEvents.Planned(ConcertId),
         ConcertEvents.Cancelled(ConcertId, "Lead singer OD'ed.")).
     When(sut => sut.StartTicketSale(TicketSaleId, DateTimeOffset.UtcNow.Date)).
     AssertThrows(
         new InvalidOperationException("Starting a ticket sale for a cancelled concert is impossible."));
 }
Beispiel #6
0
 public void PlannedConcertCanHaveTicketSaleStarted()
 {
     new FactoryScenarioFor <Concert>(Concert.Factory).
     Given(
         ConcertEvents.Planned(ConcertId)).
     When(sut => sut.StartTicketSale(TicketSaleId, DateTimeOffset.UtcNow.Date)).
     Then(
         TicketSaleEvents.Started(TicketSaleId, ConcertId, DateTimeOffset.UtcNow.Date, 100)).
     Assert();
 }
Beispiel #7
0
                public static Concert Plan(ConcertId id, int venueCapacity)
                {
                    if (venueCapacity < 1)
                    {
                        throw new ArgumentException("venueCapacity");
                    }

                    var concert = Factory();

                    concert.Apply(ConcertEvents.Planned(id));
                    return(concert);
                }