Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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.");
            }
        }
Beispiel #3
0
        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);
        }