diff options
Diffstat (limited to 'org.eclipse.mylyn.reviews.connector.tests/src')
6 files changed, 360 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfBasicConnectorTest.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfBasicConnectorTest.java new file mode 100644 index 00000000..51f12abf --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfBasicConnectorTest.java @@ -0,0 +1,117 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; +import junit.framework.TestCase; + +import org.eclipse.mylyn.reviews.connector.support.EmfTestConnector; +import org.junit.Before; +import org.junit.Test; + +/** + * Excercises connector issues that don't require a client. + * + * @author milesparker + */ +@SuppressWarnings("nls") +public class EmfBasicConnectorTest extends TestCase { + + static AbstractEmfConnector connector; + + @Override + @Before + public void setUp() { + connector = new EmfTestConnector(); + } + + @Test + public void testCanCreateNewTask() { + assertTrue(connector.canCreateNewTask(null)); + } + + @Test + public void testGetConnectorKind() { + assertEquals("emftasks", connector.getConnectorKind()); + } + + @Test + public void testGetRepositoryUrlFromTaskUrl() { + assertNull(connector.getRepositoryUrlFromTaskUrl(null)); + assertNull(connector.getRepositoryUrlFromTaskUrl("")); //$NON-NLS-1$ + assertNull(connector.getRepositoryUrlFromTaskUrl("invalid repository url")); //$NON-NLS-1$ + assertNull(connector.getRepositoryUrlFromTaskUrl("http://invalid.repository.url")); //$NON-NLS-1$ + assertNull(connector.getRepositoryUrlFromTaskUrl("file://invalid.repository.url")); //$NON-NLS-1$ + assertNull(connector.getRepositoryUrlFromTaskUrl("platform:/resource/invalid.plugin/etc")); //$NON-NLS-1$ + assertNull(connector.getRepositoryUrlFromTaskUrl("platform:/resource/invalid.plugin/etc")); //$NON-NLS-1$ + assertEquals("file:///somewhere", connector.getRepositoryUrlFromTaskUrl("file:///somewhere#MyTest")); //$NON-NLS-1$ + } + + @Test + public void testGetTaskIdFromTaskUrl() { + assertNull(connector.getTaskIdFromTaskUrl(null)); + assertNull(connector.getTaskIdFromTaskUrl("")); //$NON-NLS-1$ + assertNull(connector.getTaskIdFromTaskUrl("invalid repository url")); //$NON-NLS-1$ + assertNull(connector.getTaskIdFromTaskUrl("http://invalid.repository.url")); //$NON-NLS-1$ + assertEquals("MyTest", connector.getTaskIdFromTaskUrl("file:///somewhere" + "#MyTest")); //$NON-NLS-1$ + } + + @Test + public void testGetTaskUrl() { + assertEquals("file:///somewhere" + "#MyTest", //$NON-NLS-1$ + connector.getTaskUrl("file:///somewhere", "MyTest")); //$NON-NLS-1$ + } + + @Test + public void testGetTasKeyFromTaskId() { + String enDashString = "This is a test \u2013 of hyphens."; + String hyphenString = "This is a test - of hyphens."; + assertThat(enDashString, is(not(hyphenString))); + assertThat(enDashString, is(connector.encodeTaskKey(hyphenString))); + } + + @Test + /** + * Since emf ids can be arbitrary strings, we have to be careful to handle delimiters, spaces and other stray characters in the key itself + */ + public void testGetRepositoryUrlFromTaskUrl_UrlEncode() { + assertEquals( + "file:///somewhere", connector.getRepositoryUrlFromTaskUrl("file:///somewhere#MyTest 3 @ http://something.com")); //$NON-NLS-1$ + assertEquals( + "file:///somewhere", connector.getRepositoryUrlFromTaskUrl("file:///somewhere#MyTest <breakme>\"broken\"</breakme>")); //$NON-NLS-1$ + assertEquals( + "file:///somewhere", connector.getRepositoryUrlFromTaskUrl("file:///somewhere#MyTest <breakme/>"broken"<breakme/>")); //$NON-NLS-1$ + } + + @Test + public void testGetTaskIdFromTaskUrl_UrlEncode() { + assertEquals( + "MyTest 3 @ http://something.com", connector.getTaskIdFromTaskUrl("file:///somewhere#MyTest 3 @ http://something.com")); //$NON-NLS-1$ + assertEquals( + "MyTest <breakme>\"broken\"</breakme>", connector.getTaskIdFromTaskUrl("file:///somewhere#MyTest%20<breakme>\"broken\"</breakme>")); //$NON-NLS-1$ + assertEquals( + "MyTest <breakme/>"broken"<breakme/>", connector.getTaskIdFromTaskUrl("file:///somewhere#MyTest <breakme/>"broken"<breakme/>")); //$NON-NLS-1$ + } + + @Test + public void testGetTaskUrl_UrlEncode() { + assertEquals("file:///somewhere#MyTest+3+%40+http%3A%2F%2Fsomething.com", //$NON-NLS-1$ + connector.getTaskUrl("file:///somewhere", "MyTest 3 @ http://something.com")); //$NON-NLS-1$ + assertEquals("file:///somewhere#MyTest+%3Cbreakme%3E%22broken%22%3C%2Fbreakme%3E", //$NON-NLS-1$ + connector.getTaskUrl("file:///somewhere", "MyTest <breakme>\"broken\"</breakme>")); //$NON-NLS-1$ + assertEquals( + "file:///somewhere#MyTest+%26lt%3Bbreakme%2F%26gt%3B%26quot%3Bbroken%26quot%3B%26lt%3Bbreakme%2F%26gt%3B", //$NON-NLS-1$ + connector.getTaskUrl("file:///somewhere", "MyTest <breakme/>"broken"<breakme/>")); //$NON-NLS-1$ + } +} diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfTaskSchemaTest.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfTaskSchemaTest.java new file mode 100644 index 00000000..0ed18cda --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/EmfTaskSchemaTest.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector; + +import junit.framework.TestCase; + +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.mylyn.tasks.core.data.AbstractTaskSchema.Field; +import org.eclipse.mylyn.tasks.core.data.TaskAttribute; +import org.eclipse.mylyn.reviews.connector.support.BasicTestTaskSchema; +import org.eclipse.mylyn.reviews.connector.support.MappedTestTaskSchema; +import org.junit.Before; +import org.junit.Test; + +@SuppressWarnings("nls") +public class EmfTaskSchemaTest extends TestCase { + + @Override + @Before + protected void setUp() throws Exception { + // ignore + super.setUp(); + } + + @Test + public void testBasicSchema() { + BasicTestTaskSchema schema = new BasicTestTaskSchema(); + schema.initialize(); + Field field = schema.getFieldByFeature(EcorePackage.Literals.EANNOTATION__SOURCE); + assertNotNull(field); + assertEquals("emf.ecore.eannotation.source", field.getKey()); + assertEquals(TaskAttribute.KIND_DEFAULT, field.getKind()); + assertEquals("Source", field.getLabel()); + assertEquals("emf.ecore.eannotation.source", field.getIndexKey()); + } + + @Test + public void testTypes() { + BasicTestTaskSchema schema = new BasicTestTaskSchema(); + schema.initialize(); + Field field = schema.getFieldByFeature(EcorePackage.Literals.EANNOTATION__SOURCE); + assertEquals(TaskAttribute.TYPE_LONG_RICH_TEXT, field.getType()); +// field = schema.getFieldByFeature(EcorePackage.Literals.EANNOTATION__CONTENTS); +// assertEquals(EmfTaskSchema.TYPE_EMF_REFERENCE, field.getType()); + field = schema.getFieldByFeature(EcorePackage.Literals.ETYPED_ELEMENT__LOWER_BOUND); + assertEquals(TaskAttribute.TYPE_INTEGER, field.getType()); + field = schema.getFieldByFeature(EcorePackage.Literals.ETYPED_ELEMENT__REQUIRED); + assertEquals(TaskAttribute.TYPE_BOOLEAN, field.getType()); + //TODO check more types + } + + @Test + public void testMappedTaskData() { + MappedTestTaskSchema schema = new MappedTestTaskSchema(); + schema.initialize(); + String featureKey = schema.getKey(schema.getFeature(TaskAttribute.TASK_KEY)); + assertEquals("emf.ecore.epackage.nsuri", featureKey); + featureKey = schema.getKey(schema.getFeature(TaskAttribute.SUMMARY)); + assertEquals("emf.ecore.epackage.nsprefix", featureKey); + } +} diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/query/QueryOperationTest.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/query/QueryOperationTest.java new file mode 100644 index 00000000..13c1deea --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/query/QueryOperationTest.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector.query; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import junit.framework.TestCase; + +import org.eclipse.mylyn.reviews.connector.query.QueryOperation; +import org.junit.Test; + +@SuppressWarnings("nls") +public class QueryOperationTest extends TestCase { + + @Test + public void testDescriptions() { + String[] description = QueryOperation.toDescription(QueryOperation.ALL_OPERATIONS); + assertThat(description[0], is("contains")); + } +} diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/BasicTestTaskSchema.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/BasicTestTaskSchema.java new file mode 100644 index 00000000..dcd20e10 --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/BasicTestTaskSchema.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector.support; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.mylyn.reviews.connector.EmfTaskSchema; + +public class BasicTestTaskSchema extends EmfTaskSchema { + + @Override + protected EClass[] getSchemaEClasses() { + return new EClass[] { EcorePackage.Literals.EANNOTATION, EcorePackage.Literals.ETYPED_ELEMENT }; + } + + @Override + protected FieldFeature[] getSchemaPairs() { + return new FieldFeature[] {}; + } +}
\ No newline at end of file diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/EmfTestConnector.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/EmfTestConnector.java new file mode 100644 index 00000000..64c71fe8 --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/EmfTestConnector.java @@ -0,0 +1,84 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector.support; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.mylyn.internal.reviews.connector.EmfCorePlugin; +import org.eclipse.mylyn.tasks.core.data.DefaultTaskSchema; +import org.eclipse.mylyn.reviews.connector.EmfTaskSchema.FieldFeature; +import org.eclipse.mylyn.reviews.connector.GenericEmfConnector; +import org.osgi.framework.Bundle; + +public class EmfTestConnector extends GenericEmfConnector { + + public static final String CONNECTOR_KIND = "emftasks"; //$NON-NLS-1$ + + public class TestTaskSchema extends BasicTestTaskSchema { + + } + + BasicTestTaskSchema testSchema = new MappedTestTaskSchema(); + + public EmfTestConnector() { + } + + @Override + public String getConnectorKind() { + return CONNECTOR_KIND; + } + + @Override + public String getLabel() { + return "EMF Test"; //$NON-NLS-1$ + } + + @Override + public EReference getContainmentReference() { + return EcorePackage.Literals.EPACKAGE__ECLASSIFIERS; + } + + @Override + public EClass[] getTaskClasses() { + return new EClass[] { EcorePackage.Literals.ECLASSIFIER }; + } + + @Override + public FieldFeature[] getTaskFeatures() { + DefaultTaskSchema parent = DefaultTaskSchema.getInstance(); + return new FieldFeature[] { new FieldFeature(parent.TASK_KEY, EcorePackage.Literals.ENAMED_ELEMENT__NAME), + new FieldFeature(parent.SUMMARY, EcorePackage.Literals.ECLASSIFIER__INSTANCE_TYPE_NAME) }; + } + + @Override + public Bundle getConnectorBundle() { + return EmfCorePlugin.getDefault().getBundle(); + } + + @Override + public EAttribute getContentsNameAttribute() { + return null; + } + + @Override + public EAttribute[] getSearchAttributes() { + // ignore + return null; + } + + @Override + public EAttribute getTaskKeySequenceAttribute() { + return null; + } +}
\ No newline at end of file diff --git a/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/MappedTestTaskSchema.java b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/MappedTestTaskSchema.java new file mode 100644 index 00000000..9488c21f --- /dev/null +++ b/org.eclipse.mylyn.reviews.connector.tests/src/org/eclipse/mylyn/reviews/connector/support/MappedTestTaskSchema.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2012 Tasktop Technologies 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: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.reviews.connector.support; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.mylyn.tasks.core.data.DefaultTaskSchema; + +public class MappedTestTaskSchema extends BasicTestTaskSchema { + + @Override + protected EClass[] getSchemaEClasses() { + return new EClass[] { EcorePackage.Literals.EPACKAGE }; + } + + @Override + protected FieldFeature[] getSchemaPairs() { + DefaultTaskSchema parent = DefaultTaskSchema.getInstance(); + return new FieldFeature[] { new FieldFeature(parent.TASK_KEY, EcorePackage.Literals.EPACKAGE__NS_URI), + new FieldFeature(parent.SUMMARY, EcorePackage.Literals.EPACKAGE__NS_PREFIX) }; + } +}
\ No newline at end of file |