/*
* Copyright (c) JForum Team. All rights reserved.
*
* The software in this package is published under the terms of the LGPL
* license a copy of which has been included with this distribution in the
* license.txt file.
*
* The JForum Project
* http://www.jforum.net
*/
package net.jforum.controllers;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.List;
import net.jforum.entities.BadWord;
import net.jforum.repository.BadWordRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.runners.MockitoJUnitRunner;
import br.com.caelum.vraptor.util.test.MockResult;
/**
* @author Rafael Steil, Jonatan Cloutier
*/
@RunWith(MockitoJUnitRunner.class)
public class BadWordControllerActionsTestCase extends AdminTestCase {
@Mock private BadWordRepository repository;
@Spy private MockResult mockResult;
@Mock private BadWordAdminController mockBadWordAdminController;
@InjectMocks private BadWordAdminController action;
public BadWordControllerActionsTestCase() {
super(BadWordAdminController.class);
}
@Test
public void deleteUsingNullShouldIgnore() {
when(mockResult.redirectTo(action)).thenReturn(mockBadWordAdminController);
action.delete(null);
verify(mockBadWordAdminController).list();
}
@Test
public void delete() {
BadWord w1 = new BadWord();
BadWord w2 = new BadWord();
when(repository.get(1)).thenReturn(w1);
when(repository.get(2)).thenReturn(w2);
when(mockResult.redirectTo(action)).thenReturn(mockBadWordAdminController);
action.delete(1, 2);
verify(repository).remove(w1);
verify(repository).remove(w2);
verify(mockBadWordAdminController).list();
}
@Test
public void list() {
List<BadWord> list = new ArrayList<BadWord>();
when(repository.getAll()).thenReturn(list);
action.list();
assertEquals(list, mockResult.included("words"));
}
@Test
public void addSave() {
final BadWord word = new BadWord();
when(mockResult.redirectTo(action)).thenReturn(mockBadWordAdminController);
action.addSave(word);
verify(repository).add(word);
verify(mockBadWordAdminController).list();
}
@Test
public void edit() {
final BadWord word = new BadWord();
when(repository.get(1)).thenReturn(word);
when(mockResult.forwardTo(action)).thenReturn(mockBadWordAdminController);
action.edit(1);
assertEquals(word, mockResult.included("word"));
verify(mockBadWordAdminController).add();
}
@Test
public void editSave() {
final BadWord word = new BadWord();
when(mockResult.redirectTo(action)).thenReturn(mockBadWordAdminController);
action.editSave(word);
verify(repository).update(word);
verify(mockBadWordAdminController).list();
}
}