| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockitousage.examples.use; |
| |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.mockito.InOrder; |
| import org.mockito.InjectMocks; |
| import org.mockito.Mock; |
| import org.mockito.junit.MockitoJUnit; |
| import org.mockito.junit.MockitoRule; |
| |
| import java.util.Arrays; |
| |
| import static org.mockito.Mockito.*; |
| |
| public class ExampleTest { |
| |
| @Rule public MockitoRule rule = MockitoJUnit.rule(); |
| |
| @Mock private ArticleCalculator mockCalculator; |
| @Mock private ArticleDatabase mockDatabase; |
| |
| @InjectMocks private ArticleManager articleManager; |
| |
| @Test |
| public void managerCountsArticlesAndSavesThemInTheDatabase() { |
| when(mockCalculator.countArticles("Guardian")).thenReturn(12); |
| when(mockCalculator.countArticlesInPolish(anyString())).thenReturn(5); |
| |
| articleManager.updateArticleCounters("Guardian"); |
| |
| verify(mockDatabase).updateNumberOfArticles("Guardian", 12); |
| verify(mockDatabase).updateNumberOfPolishArticles("Guardian", 5); |
| verify(mockDatabase).updateNumberOfEnglishArticles("Guardian", 7); |
| } |
| |
| @Test |
| public void managerCountsArticlesUsingCalculator() { |
| articleManager.updateArticleCounters("Guardian"); |
| |
| verify(mockCalculator).countArticles("Guardian"); |
| verify(mockCalculator).countArticlesInPolish("Guardian"); |
| } |
| |
| @Test |
| public void managerSavesArticlesInTheDatabase() { |
| articleManager.updateArticleCounters("Guardian"); |
| |
| verify(mockDatabase).updateNumberOfArticles("Guardian", 0); |
| verify(mockDatabase).updateNumberOfPolishArticles("Guardian", 0); |
| verify(mockDatabase).updateNumberOfEnglishArticles("Guardian", 0); |
| } |
| |
| @Test |
| public void managerUpdatesNumberOfRelatedArticles() { |
| Article articleOne = new Article(); |
| Article articleTwo = new Article(); |
| Article articleThree = new Article(); |
| |
| when(mockCalculator.countNumberOfRelatedArticles(articleOne)).thenReturn(1); |
| when(mockCalculator.countNumberOfRelatedArticles(articleTwo)).thenReturn(12); |
| when(mockCalculator.countNumberOfRelatedArticles(articleThree)).thenReturn(0); |
| |
| when(mockDatabase.getArticlesFor("Guardian")).thenReturn(Arrays.asList(articleOne, articleTwo, articleThree)); |
| |
| articleManager.updateRelatedArticlesCounters("Guardian"); |
| |
| verify(mockDatabase).save(articleOne); |
| verify(mockDatabase).save(articleTwo); |
| verify(mockDatabase).save(articleThree); |
| } |
| |
| @Test |
| public void shouldPersistRecalculatedArticle() { |
| Article articleOne = new Article(); |
| Article articleTwo = new Article(); |
| |
| when(mockCalculator.countNumberOfRelatedArticles(articleOne)).thenReturn(1); |
| when(mockCalculator.countNumberOfRelatedArticles(articleTwo)).thenReturn(12); |
| |
| when(mockDatabase.getArticlesFor("Guardian")).thenReturn(Arrays.asList(articleOne, articleTwo)); |
| |
| articleManager.updateRelatedArticlesCounters("Guardian"); |
| |
| InOrder inOrder = inOrder(mockDatabase, mockCalculator); |
| |
| inOrder.verify(mockCalculator).countNumberOfRelatedArticles((Article) anyObject()); |
| inOrder.verify(mockDatabase, atLeastOnce()).save((Article) anyObject()); |
| } |
| } |