@Test public void mockUpgradeLevels() throws Exception { UserServiceImpl userServiceImpl = new UserServiceImpl(); UserDao mockUserDao = mock(UserDao.class); when(mockUserDao.getAll()).thenReturn(this.users); userServiceImpl.setUserDao(mockUserDao); MailSender mockMailSender = mock(MailSender.class); userServiceImpl.setMailSender(mockMailSender); userServiceImpl.upgradeLevels(); verify(mockUserDao, times(2)).update(any(User.class)); verify(mockUserDao, times(2)).update(any(User.class)); verify(mockUserDao).update(users.get(1)); assertThat(users.get(1).getLevel(), is(Level.SILVER)); verify(mockUserDao).update(users.get(3)); assertThat(users.get(3).getLevel(), is(Level.GOLD)); ArgumentCaptor<SimpleMailMessage> mailMessageArg = ArgumentCaptor.forClass(SimpleMailMessage.class); verify(mockMailSender, times(2)).send(mailMessageArg.capture()); List<SimpleMailMessage> mailMessages = mailMessageArg.getAllValues(); assertThat(mailMessages.get(0).getTo()[0], is(users.get(1).getEmail())); assertThat(mailMessages.get(1).getTo()[0], is(users.get(3).getEmail())); }
@Test public void upgradeLevels() throws Exception { UserServiceImpl userServiceImpl = new UserServiceImpl(); MockUserDao mockUserDao = new MockUserDao(this.users); userServiceImpl.setUserDao(mockUserDao); MockMailSender mockMailSender = new MockMailSender(); userServiceImpl.setMailSender(mockMailSender); userServiceImpl.upgradeLevels(); List<User> updated = mockUserDao.getUpdated(); assertThat(updated.size(), is(2)); checkUserAndLevel(updated.get(0), "joytouch", Level.SILVER); checkUserAndLevel(updated.get(1), "madnite1", Level.GOLD); List<String> request = mockMailSender.getRequests(); assertThat(request.size(), is(2)); assertThat(request.get(0), is(users.get(1).getEmail())); assertThat(request.get(1), is(users.get(3).getEmail())); }
public List<User> getAll() { for (User user : super.getAll()) { super.update(user); } return null; }
protected void upgradeLevel(User user) { if (user.getId().equals(this.id)) throw new TestUserServiceException(); super.upgradeLevel(user); }