Ejemplo n.º 1
0
        public static void Update(this PrivateBookListItem item, Dictionary <string, object> source,
                                  BookItemStatus newStatus)
        {
            var newReadingTime = ReadingTimeCalculator.Calculate(item.ReadingTimeInSeconds, item.Status,
                                                                 item.LastStatusUpdateDate, newStatus);

            source.Add(nameof(PrivateBookListItem.ReadingTimeInSeconds), newReadingTime);
            ObjectUpdater <PrivateBookListItem> .Update(item, source);
        }
Ejemplo n.º 2
0
        Validate_ReturnsCantChangeStatusFromStartedButPostponedToToReading_When_OldStatusIsStartedButPostponedAndNewStatusIsToReading()
        {
            var item = new PrivateBookListItem
            {
                Status = BookItemStatus.StartedButPostponed
            };

            var ex = Assert.Throws <CannotChangeStatusException>(() =>
                                                                 PrivateBookListItemStatusValidator.Validate(item.Status, BookItemStatus.ToReading));

            Assert.Equal(ExceptionMessages.CannotChangeStatusFromTo.F(item.Status.ToStringFromDescription(),
                                                                      BookItemStatus.ToReading.ToStringFromDescription()), ex.Message);
        }
Ejemplo n.º 3
0
        public void Validate_ReturnsCantChangeStatusFromReadToReading_When_OldStatusIsReadAndNewStatusIsReading()
        {
            var item = new PrivateBookListItem
            {
                Status = BookItemStatus.Read
            };

            var ex = Assert.Throws <CannotChangeStatusException>(() =>
                                                                 PrivateBookListItemStatusValidator.Validate(item.Status, BookItemStatus.Reading));

            Assert.Equal(
                ExceptionMessages.CannotChangeStatusFromTo.F(item.Status.ToString("G"),
                                                             BookItemStatus.Reading.ToString("G")), ex.Message);
        }
Ejemplo n.º 4
0
        public void Map_ReturnsPrivateBookListItemDto_When_PrivateBookListItemIsMapped()
        {
            var privateListItem = new PrivateBookListItem
            {
                Id   = 54,
                Book = new Book
                {
                    Author = "Author",
                    Title  = "Title"
                },
                Status = BookItemStatus.Reading,
                ReadingTimeInSeconds = Convert.ToInt32(TimeSpan.FromHours(5).TotalSeconds)
            };
            var mapped = Mapper.Map <PrivateBookListItem, PrivateBookListItemDto>(privateListItem);

            Assert.Equal(privateListItem.Id, mapped.Id);
            Assert.Equal(privateListItem.Book.Title, mapped.Title);
            Assert.Equal(privateListItem.Book.Author, mapped.Author);
            Assert.Equal((int)privateListItem.Status, mapped.Status);
            Assert.Equal(privateListItem.ReadingTimeInSeconds, mapped.ReadingTimeInSeconds);
        }
Ejemplo n.º 5
0
        Calculate_Returns3Days_When_BookStatusChangedFromReadingToStartedButPostponed_And_LastStatusUpdateDateIsNowMinus3Days()
        {
            var item = new PrivateBookListItem
            {
                Book = new Book
                {
                    Author = "Author",
                    Title  = "Title",
                },
                BookListId           = 3,
                Id                   = 5,
                ReadingTimeInSeconds = default(int),
                LastStatusUpdateDate = DateTime.Now.AddDays(-3),
                Status               = BookItemStatus.Reading
            };

            var readingTime = ReadingTimeCalculator.Calculate(item.ReadingTimeInSeconds, item.Status,
                                                              item.LastStatusUpdateDate,
                                                              BookItemStatus.StartedButPostponed);

            Assert.True(Convert.ToInt32(TimeSpan.FromDays(3).TotalSeconds) == readingTime);
        }
Ejemplo n.º 6
0
        Calculate_Returns0_When_BookStatusChangedFromReadingToReading_And_LastStatusUpdateDateIsNowMinus3Days()
        {
            var item = new PrivateBookListItem
            {
                Book = new Book
                {
                    Author = "Author",
                    Title  = "Title",
                },
                BookListId           = 3,
                Id                   = 5,
                ReadingTimeInSeconds = Convert.ToInt32(TimeSpan.FromMinutes(65).TotalSeconds),
                LastStatusUpdateDate = DateTime.Now.AddDays(-3),
                Status               = BookItemStatus.Reading
            };

            var readingTime = ReadingTimeCalculator.Calculate(item.ReadingTimeInSeconds, item.Status,
                                                              item.LastStatusUpdateDate,
                                                              BookItemStatus.Reading);

            Assert.True(item.ReadingTimeInSeconds == readingTime);
        }
Ejemplo n.º 7
0
        Calculate_Returns0_When_BookStatusChangedFromToReadingToReading_And_LastStatusUpdateDateIsNowMinus3Days()
        {
            var item = new PrivateBookListItem
            {
                Book = new Book
                {
                    Author = "Author",
                    Title  = "Title",
                },
                BookListId           = 3,
                Id                   = 5,
                ReadingTimeInSeconds = default(int),
                LastStatusUpdateDate = DateTime.Now.AddDays(-3),
                Status               = BookItemStatus.ToReading
            };

            var readingTime = ReadingTimeCalculator.Calculate(item.ReadingTimeInSeconds, item.Status,
                                                              item.LastStatusUpdateDate,
                                                              BookItemStatus.Reading);

            Assert.True(readingTime == default(int));
        }
Ejemplo n.º 8
0
        private static BookListItem CreateItem(BookList list, AddBookToLists command)
        {
            BookListItem item;

            if (list.Type == BookListType.Shared)
            {
                item = new SharedBookListItem
                {
                    BookListId = list.Id,
                    BookId     = command.BookId
                };
            }
            else
            {
                item = new PrivateBookListItem
                {
                    BookId     = command.BookId,
                    BookListId = list.Id
                };
            }

            return(item);
        }