#306 Create PlayerCommand abstract type

- Create PlayerCommand to handle player-only command checks centrally and consistently
- Adjust tests
This commit is contained in:
ljacqu
2015-12-26 19:47:47 +01:00
parent 74ceb66430
commit 27fee3ca64
25 changed files with 250 additions and 393 deletions
@@ -1,6 +1,5 @@
package fr.xephi.authme.command.executable.logout;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.command.CommandService;
import fr.xephi.authme.process.Management;
import fr.xephi.authme.settings.Settings;
@@ -10,30 +9,30 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.ArgumentCaptor;
import java.util.ArrayList;
import java.util.Collections;
import static org.mockito.Matchers.any;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
/**
* Test for {@link LogoutCommand}.
*/
public class LogoutCommandTest {
private static Management managementMock;
private CommandService commandService;
@Before
public void initializeAuthMeMock() {
WrapperMock wrapper = WrapperMock.createInstance();
AuthMe pluginMock = wrapper.getAuthMe();
WrapperMock.createInstance();
Settings.captchaLength = 10;
managementMock = mock(Management.class);
Mockito.when(pluginMock.getManagement()).thenReturn(managementMock);
commandService = mock(CommandService.class);
}
@Test
@@ -43,10 +42,13 @@ public class LogoutCommandTest {
LogoutCommand command = new LogoutCommand();
// when
command.executeCommand(sender, new ArrayList<String>(), mock(CommandService.class));
command.executeCommand(sender, new ArrayList<String>(), commandService);
// then
Mockito.verify(managementMock, never()).performLogout(any(Player.class));
verify(commandService, never()).getManagement();
ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class);
verify(sender).sendMessage(messageCaptor.capture());
assertThat(messageCaptor.getValue(), containsString("only for players"));
}
@Test
@@ -54,12 +56,14 @@ public class LogoutCommandTest {
// given
Player sender = mock(Player.class);
LogoutCommand command = new LogoutCommand();
Management management = mock(Management.class);
given(commandService.getManagement()).willReturn(management);
// when
command.executeCommand(sender, Collections.singletonList("password"), mock(CommandService.class));
command.executeCommand(sender, Collections.singletonList("password"), commandService);
// then
Mockito.verify(managementMock).performLogout(sender);
verify(management).performLogout(sender);
}
}