package com.qprogramming.tasq.account; import com.qprogramming.tasq.projects.Project; import com.qprogramming.tasq.task.Task; import com.qprogramming.tasq.test.TestUtils; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.LinkedList; import java.util.List; import java.util.Set; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.*; /** * Created by Khobar on 05.10.2016. */ @RunWith(MockitoJUnitRunner.class) public class LastVisitedServiceTest { private LastVisitedService visitedService; @Mock private LastVisitedRepository lastVisitedRepositoryMock; private Account testAccount; @Before public void setUp() { visitedService = new LastVisitedService(lastVisitedRepositoryMock); testAccount = TestUtils.createAccount(); } @Test public void addLastVisitedUpdateTest() throws Exception { Task visitedTask = TestUtils.createTask(TestUtils.TASK_NAME, 3, TestUtils.createProject()); List<LastVisited> lastVisitedTasks = TestUtils.createLastVisitedTasks(4); lastVisitedTasks.get(3).setTime(new DateTime().minusDays(1).toDate()); when(lastVisitedRepositoryMock.findByAccountAndTypeNotNullOrderByTimeDesc(testAccount.getId())).thenReturn(lastVisitedTasks); visitedService.addLastVisited(testAccount.getId(), visitedTask); verify(lastVisitedRepositoryMock, times(1)).save(anyCollection()); } @Test public void addLastVisitedMoreTest() throws Exception { Task visitedTask = TestUtils.createTask(TestUtils.TASK_NAME, 5, TestUtils.createProject()); List<LastVisited> lastVisitedTasks = TestUtils.createLastVisitedTasks(5); lastVisitedTasks.get(3).setTime(new DateTime().minusDays(1).toDate()); LastVisited oldest = lastVisitedTasks.get(3); when(lastVisitedRepositoryMock.findByAccountAndTypeNotNullOrderByTimeDesc(testAccount.getId())).thenReturn(lastVisitedTasks); visitedService.addLastVisited(testAccount.getId(), visitedTask); verify(lastVisitedRepositoryMock, times(1)).delete(oldest); verify(lastVisitedRepositoryMock, times(1)).save(anyCollection()); } @Test public void getAccountLastVisited() throws Exception { List<LastVisited> lastVisitedTasks = TestUtils.createLastVisitedTasks(4); when(lastVisitedRepositoryMock.findByAccountOrderByTimeDesc(testAccount.getId())).thenReturn(lastVisitedTasks); Set<LastVisited> accountLastVisited = visitedService.getAccountLastVisited(testAccount.getId()); assertTrue(accountLastVisited.size() == 4); } }