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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }