コード例 #1
0
        public Result <Purchase> SellTickets(IConcert concert, TicketsBuyer buyer, TicketQuantity quantity)
        {
            var ticketsResult = concert.IssueTickets(quantity);

            return(ticketsResult
                   .Map(tickets => {
                buyer.AddPurchase(tickets);
                return new Purchase(buyer, tickets);
            }));
        }
コード例 #2
0
        public void AddTicketsToBuyerWhenIssuingTicketsSucceeds()
        {
            var tickets        = BuildTickets();
            var concert        = SetUpConcertWhichIssueTickets(tickets);
            var buyer          = new TicketsBuyer("1", "Buyer name");
            var wantedQuantity = new TicketQuantity(5);
            var service        = new TicketsService();

            service.SellTickets(concert, buyer, wantedQuantity);

            Assert.NotEmpty(buyer.Purchases);
        }
コード例 #3
0
        public void ReturnFailureWhenIssuingTicketsFails()
        {
            var errorMessage   = "Some error occured";
            var concert        = SetUpConcertWhichDoesNotIssueTickets(errorMessage);
            var buyer          = new TicketsBuyer("1", "Buyer name");
            var wantedQuantity = new TicketQuantity(5);
            var service        = new TicketsService();

            var purchase = service.SellTickets(concert, buyer, wantedQuantity);

            Assert.True(purchase.IsFailure);
            Assert.Equal(errorMessage, purchase.Error);
        }
コード例 #4
0
        public void ReturnPurchaseWhenIssuingTicketsSucceeds()
        {
            var tickets        = BuildTickets();
            var concert        = SetUpConcertWhichIssueTickets(tickets);
            var buyer          = new TicketsBuyer("1", "Buyer name");
            var wantedQuantity = new TicketQuantity(5);
            var service        = new TicketsService();

            var purchase = service.SellTickets(concert, buyer, wantedQuantity);

            Assert.True(purchase.IsSuccess);
            Assert.Equal(buyer.Id, purchase.Value.Buyer.Id);
            Assert.Equal(tickets, purchase.Value.Tickets);
        }