/* * Copyright (c) 2009 Netcetera AG and others. * All rights reserved. * This program and the accompanying materials are made available under * the terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at * * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * - Netcetera AG: initial implementation */ package ch.netcetera.eclipse.projectconfig.core.configurationcommands; import java.util.Arrays; import java.util.List; import org.easymock.EasyMock; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.ILogListener; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.junit.Test; import org.osgi.framework.Bundle; import ch.netcetera.eclipse.common.text.ITextAccessor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * Tests for {@link AbstractProjectConfigurationCommand}. */ public class AbstractProjectConfigurationCommandTest { private static class TestProjectConfigurationCommand extends AbstractProjectConfigurationCommand { private final IStatus status; TestProjectConfigurationCommand(List<String> arguments, ITextAccessor textAccessor, String pluginId, ILog log, IStatus status) { super(arguments, textAccessor, pluginId, log); this.status = status; } @Override boolean isEnabled() { return true; } @Override IStatus executeOnProject(IProject project) { return this.status; } } /** * Tests the setters and getters. */ @Test public void testSetterGetter() { final List<String> arguments = Arrays.asList("a", "b"); final ITextAccessor textAccessor = EasyMock.createMock(ITextAccessor.class); EasyMock.replay(textAccessor); final ILog log = EasyMock.createMock(ILog.class); EasyMock.replay(log); final String pluginId = "plugin"; TestProjectConfigurationCommand command = new TestProjectConfigurationCommand(arguments, textAccessor, pluginId, log, Status.OK_STATUS); assertEquals(pluginId, command.getPluginId()); assertEquals(2, command.getArgumentList().size()); assertNotNull(command.getTextAccessor()); assertNotNull(command.getLog()); } /** * Tests the createStatus methods. */ @Test public void testCreateStatus() { final List<String> arguments = Arrays.asList("a", "b"); final String messageKey = "message-key"; final String messageValue = "message-value"; final ITextAccessor textAccessor = EasyMock.createMock(ITextAccessor.class); EasyMock.expect(textAccessor.getText(messageKey)).andReturn(messageValue); EasyMock.replay(textAccessor); final ILog log = EasyMock.createMock(ILog.class); EasyMock.replay(log); final String pluginId = "plugin"; TestProjectConfigurationCommand command = new TestProjectConfigurationCommand(arguments, textAccessor, pluginId, log, Status.OK_STATUS); IStatus status = command.createStatus(IStatus.ERROR, messageKey); assertNotNull(status); assertEquals(pluginId, status.getPlugin()); assertEquals(IStatus.ERROR, status.getSeverity()); assertEquals(messageValue, status.getMessage()); } /** * Tests the execute method. */ @Test public void testExecuteOk() { final List<String> arguments = Arrays.asList("a", "b"); final ITextAccessor textAccessor = EasyMock.createMock(ITextAccessor.class); EasyMock.replay(textAccessor); final ILog log = EasyMock.createMock(ILog.class); EasyMock.replay(log); final String pluginId = "plugin"; TestProjectConfigurationCommand command = new TestProjectConfigurationCommand(arguments, textAccessor, pluginId, log, Status.OK_STATUS); final IProject project = EasyMock.createMock(IProject.class); EasyMock.replay(project); List<IProject> projects = Arrays.asList(project); IStatus status = command.execute(projects); assertNotNull(status); assertEquals(IStatus.OK, status.getSeverity()); } /** * Tests the execute method. */ @Test public void testExecuteError() { final List<String> arguments = Arrays.asList("a", "b"); final String messageKey = "error.config"; final String messageValue = "message-value"; final IStatus status = new Status(IStatus.ERROR, "a", messageKey); final ITextAccessor textAccessor = EasyMock.createMock(ITextAccessor.class); EasyMock.expect(textAccessor.getText(messageKey)).andReturn(messageValue); EasyMock.replay(textAccessor); final ILog log = new ILog() { @Override public void removeLogListener(ILogListener listener) { // nop } @Override public void log(IStatus astatus) { // nop } @Override public Bundle getBundle() { return null; } @Override public void addLogListener(ILogListener listener) { // nop } }; final String pluginId = "plugin"; TestProjectConfigurationCommand command = new TestProjectConfigurationCommand(arguments, textAccessor, pluginId, log, status); final IProject project = EasyMock.createMock(IProject.class); EasyMock.replay(project); List<IProject> projects = Arrays.asList(project); IStatus result = command.execute(projects); assertNotNull(result); assertEquals(IStatus.WARNING, result.getSeverity()); } }