public void LendBook(Customer customer, BookCopy bookCopy) { var lend = new LendBookEvent(bookCopy, customer, _dateProvider.Now()); try { _dataRepository.AddEvent(lend); } catch (EventException e) { throw new DataServiceException(e); } }
private void IsValid(LendBookEvent lendBookEvent) { CheckBookEvent(lendBookEvent); if (lendBookEvent.Copy.State == BookCopy.States.Damaged || lendBookEvent.Copy.State == BookCopy.States.NeedReplacement) { throw new InvalidEventException("Book is in a bad state - cannot be lent!"); } if (lendBookEvent.Copy.IsLent) { throw new InvalidEventException("Book is already lent."); } }
public void AddEvent_LendingBookNotLent_AddsEventAndChangesBookIsLentToTrue() { _repo = new DataRepository(new ConstDataFiller(books: _booksInDataFiller, customers: _customersInDataFiller, bookCopies: _bookCopiesInDataFiller, events: _eventsInDataFiller)); var bookCopy = new BookCopy(_booksInDataFiller[3], BookCopy.States.Good, 20); _repo.AddBookCopy(bookCopy); var eve = new LendBookEvent(bookCopy, _customersInDataFiller[1], DateTime.ParseExact("01/02/2020", "dd/MM/yyyy", null)); _repo.AddEvent(eve); var actual = _repo.GetAllEvents().Contains(eve); Assert.AreEqual(true, actual); Assert.AreEqual(true, eve.Copy.IsLent); }