/******************************************************************************* * Copyright (c) 2012 Pivotal Software, Inc. * 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: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package com.vmware.vfabric.ide.eclipse.tcserver.insight.internal.ui; import java.io.File; import java.util.Collections; import junit.framework.TestCase; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.springsource.ide.eclipse.commons.tests.util.StsTestUtil; import com.vmware.vfabric.ide.eclipse.tcserver.insight.internal.ui.InsightPlugin; import com.vmware.vfabric.ide.eclipse.tcserver.insight.internal.ui.InsightPluginModel; /** * @author Steffen Pingel */ public class InsightPluginModelTest extends TestCase { InsightPluginModel model = new InsightPluginModel(); private File temp; private IPath path; @Override protected void setUp() throws Exception { temp = StsTestUtil.createTempDirectory(); path = Path.fromOSString(temp.getAbsolutePath()); assertEquals(0, model.getPlugins().size()); } public void testLoadEnabled() throws Exception { File file = new File(temp, "insight-plugin-123.jar"); file.createNewFile(); model.load(path); assertEquals(1, model.getPlugins().size()); InsightPlugin plugin = model.getPlugins().get(0); assertEquals(file, plugin.getFile()); assertEquals("123", plugin.getName()); assertTrue(plugin.isEnabled()); } public void testLoadDisabled() throws Exception { File file = new File(temp, "insight-plugin-123.jar.disabled"); file.createNewFile(); model.load(path); assertEquals(1, model.getPlugins().size()); InsightPlugin plugin = model.getPlugins().get(0); assertEquals(file, plugin.getFile()); assertEquals("123", plugin.getName()); assertFalse(plugin.isEnabled()); } public void testLoadMultiple() throws Exception { File fileA = new File(temp, "insight-plugin-a.jar.disabled"); fileA.createNewFile(); File fileB = new File(temp, "insight-plugin-b.jar"); fileB.createNewFile(); File fileC = new File(temp, "insight-plugin-c.jar"); fileC.createNewFile(); model.load(path); // ensure predictable order Collections.sort(model.getPlugins()); assertEquals(3, model.getPlugins().size()); InsightPlugin plugin = model.getPlugins().get(0); assertEquals(fileA, plugin.getFile()); assertFalse(plugin.isEnabled()); plugin = model.getPlugins().get(1); assertEquals(fileB, plugin.getFile()); assertTrue(plugin.isEnabled()); plugin = model.getPlugins().get(2); assertEquals(fileC, plugin.getFile()); assertTrue(plugin.isEnabled()); } public void testCommit() throws Exception { File fileA = new File(temp, "insight-plugin-a.jar.disabled"); fileA.createNewFile(); File fileB = new File(temp, "insight-plugin-b.jar"); fileB.createNewFile(); model.load(path); // ensure predictable order Collections.sort(model.getPlugins()); model.getPlugins().get(0).setEnabled(true); model.getPlugins().get(1).setEnabled(false); assertTrue(fileA.exists()); assertTrue(fileB.exists()); model.commit(); assertFalse(fileA.exists()); assertFalse(fileB.exists()); File fileAEnabled = new File(temp, "insight-plugin-a.jar"); assertTrue(fileAEnabled.exists()); File fileBDisabled = new File(temp, "insight-plugin-b.jar.disabled"); assertTrue(fileBDisabled.exists()); } public void testCommitToggle() throws Exception { File fileA = new File(temp, "insight-plugin-a.jar.disabled"); fileA.createNewFile(); File fileAEnabled = new File(temp, "insight-plugin-a.jar"); model.load(path); model.getPlugins().get(0).setEnabled(true); model.commit(); assertFalse(fileA.exists()); assertTrue(fileAEnabled.exists()); model.getPlugins().get(0).setEnabled(false); model.commit(); assertTrue(fileA.exists()); assertFalse(fileAEnabled.exists()); } }