Advertisement
Guest User

Untitled

a guest
Sep 24th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.79 KB | None | 0 0
  1. package com.bookmate.app.reader.tracker
  2.  
  3. import com.bookmate.domain.model.Book
  4. import com.bookmate.domain.model.ICard
  5. import com.bookmate.domain.model.LibraryCard
  6. import com.bookmate.domain.usecase.book.ChangeBookStateUsecase
  7. import com.bookmate.reader.book.tracking.BookProgressChanges.PageNumerationState.Empty
  8. import com.bookmate.reader.book.tracking.BookProgressChanges.ProgressFragment.EmptyProgressFragment
  9. import com.bookmate.reader.book.tracking.ProgressTracker.ProgressHandler.Info
  10. import com.nhaarman.mockitokotlin2.*
  11. import org.junit.Before
  12. import org.junit.Test
  13. import rx.Single
  14.  
  15. class MoveToInProgressHandlerTest {
  16.  
  17. private val randomValidInfo = Info(
  18. Empty, "dgfsdg34902", "sfaj2qw2312i3", true, false, false, false
  19. )
  20. private val randomEmptyProgressFragment = EmptyProgressFragment(0.1242142)
  21.  
  22. private lateinit var handler: MoveToInProgressHandler
  23. private lateinit var changeBookStateUsecase: ChangeBookStateUsecase
  24. private lateinit var onBookMovedToInProgressListener: (Book) -> Unit
  25. private lateinit var getBook: () -> Book
  26.  
  27. @Before
  28. fun setUp() {
  29. changeBookStateUsecase = mock()
  30. onBookMovedToInProgressListener = mock()
  31. getBook = mock()
  32.  
  33. handler = MoveToInProgressHandler(getBook, changeBookStateUsecase, onBookMovedToInProgressListener)
  34. }
  35.  
  36. @Test
  37. fun handle_isNotConfirmed_doesNothing() {
  38. // given
  39. val info = randomValidInfo.copy(isConfirmed = false)
  40. val progressFragment = randomEmptyProgressFragment
  41.  
  42. // when
  43. handler.handle(progressFragment, info)
  44.  
  45. // then
  46. verify(getBook, never()).invoke()
  47. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  48. verify(onBookMovedToInProgressListener, never()).invoke(any())
  49. }
  50.  
  51. @Test
  52. fun handle_isLaunchPage_doesNothing() {
  53. // given
  54. val info = randomValidInfo.copy(isLaunchPage = true)
  55. val progressFragment = randomEmptyProgressFragment
  56.  
  57. // when
  58. handler.handle(progressFragment, info)
  59.  
  60. // then
  61. verify(getBook, never()).invoke()
  62. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  63. verify(onBookMovedToInProgressListener, never()).invoke(any())
  64. }
  65.  
  66. @Test
  67. fun handle_isLastPage_doesNothing() {
  68. // given
  69. val info = randomValidInfo.copy(isLastPage = true)
  70. val progressFragment = randomEmptyProgressFragment
  71.  
  72. // when
  73. handler.handle(progressFragment, info)
  74.  
  75. // then
  76. verify(getBook, never()).invoke()
  77. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  78. verify(onBookMovedToInProgressListener, never()).invoke(any())
  79. }
  80.  
  81. @Test
  82. fun handle_bookIsInLibrary_stateIsInProgress_doesNothing() {
  83. // given
  84. val mockBook = mock<Book>()
  85. val mockCard = mock<LibraryCard>()
  86. whenever(mockCard.state).thenReturn(ICard.State.IN_PROGRESS)
  87. whenever(mockBook.isInLibrary).thenReturn(true)
  88. whenever(mockBook.card).thenReturn(mockCard)
  89. whenever(getBook.invoke()) doReturn (mockBook)
  90.  
  91. val info = randomValidInfo
  92. val progressFragment = randomEmptyProgressFragment
  93.  
  94. // when
  95. handler.handle(progressFragment, info)
  96.  
  97. // then
  98. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  99. verify(onBookMovedToInProgressListener, never()).invoke(any())
  100. }
  101.  
  102. @Test
  103. fun handle_bookIsInLibrary_stateIsFinished_doesNothing() {
  104. // given
  105. val mockBook = mock<Book>()
  106. val mockCard = mock<LibraryCard>()
  107. whenever(mockCard.state).thenReturn(ICard.State.FINISHED)
  108. whenever(mockBook.isInLibrary).thenReturn(true)
  109. whenever(mockBook.card).thenReturn(mockCard)
  110. whenever(getBook.invoke()) doReturn (mockBook)
  111.  
  112. val info = randomValidInfo
  113. val progressFragment = randomEmptyProgressFragment
  114.  
  115. // when
  116. handler.handle(progressFragment, info)
  117.  
  118. // then
  119. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  120. verify(onBookMovedToInProgressListener, never()).invoke(any())
  121. }
  122.  
  123. @Test
  124. fun handle_bookIsInLibrary_stateIsPending_changesStateToInProgress() {
  125. // given
  126. val mockBook = mock<Book>()
  127. val mockCard = mock<LibraryCard>()
  128. whenever(mockCard.state).thenReturn(ICard.State.PENDING)
  129. whenever(mockBook.isInLibrary).thenReturn(true)
  130. whenever(mockBook.card).thenReturn(mockCard)
  131. whenever(getBook.invoke()) doReturn (mockBook)
  132.  
  133. whenever(
  134. changeBookStateUsecase.execute(eq(mockBook), any(), eq(ICard.State.IN_PROGRESS), any())
  135. ) doReturn (Single.just<Book>(mockBook))
  136.  
  137. val info = randomValidInfo
  138. val progressFragment = randomEmptyProgressFragment
  139.  
  140. // when
  141. handler.handle(progressFragment, info)
  142.  
  143. // then
  144. verify(changeBookStateUsecase, only()).execute(eq(mockBook), any(), eq(ICard.State.IN_PROGRESS), any())
  145. verify(onBookMovedToInProgressListener, only()).invoke(eq(mockBook))
  146. }
  147.  
  148. @Test
  149. fun handle_bookIsNotInLibrary_doesNothing() {
  150. // given
  151. val mockBook = mock<Book>()
  152. whenever(mockBook.isInLibrary).thenReturn(false)
  153. whenever(getBook.invoke()) doReturn (mockBook)
  154.  
  155. val info = randomValidInfo
  156. val progressFragment = randomEmptyProgressFragment
  157.  
  158. // when
  159. handler.handle(progressFragment, info)
  160.  
  161. // then
  162. verify(changeBookStateUsecase, never()).execute(any(), any(), any(), any())
  163. verify(onBookMovedToInProgressListener, never()).invoke(any())
  164. }
  165.  
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement