| /******************************************************************************* |
| * Copyright (c) 2012 EclipseSource Muenchen GmbH. |
| * |
| * 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: |
| ******************************************************************************/ |
| package org.eclipse.emf.emfstore.fuzzy.emf.test; |
| |
| import org.eclipse.emf.emfstore.client.model.Configuration; |
| import org.eclipse.emf.emfstore.client.model.ProjectSpace; |
| import org.eclipse.emf.emfstore.client.model.WorkspaceManager; |
| import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand; |
| import org.eclipse.emf.emfstore.client.test.server.api.CoreServerTest; |
| import org.eclipse.emf.emfstore.common.CommonUtil; |
| import org.eclipse.emf.emfstore.common.model.Project; |
| import org.eclipse.emf.emfstore.fuzzy.Annotations.Data; |
| import org.eclipse.emf.emfstore.fuzzy.Annotations.DataProvider; |
| import org.eclipse.emf.emfstore.fuzzy.Annotations.Util; |
| import org.eclipse.emf.emfstore.fuzzy.FuzzyRunner; |
| import org.eclipse.emf.emfstore.fuzzy.emf.EMFDataProvider; |
| import org.eclipse.emf.emfstore.fuzzy.emf.MutateUtil; |
| import org.eclipse.emf.emfstore.modelmutator.api.ModelMutatorConfiguration; |
| import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException; |
| import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| /** |
| * Fuzzy Server test to test share, checkout, commit and update. |
| * |
| * @author Julian Sommerfeldt |
| * |
| */ |
| @RunWith(FuzzyRunner.class) |
| @DataProvider(EMFDataProvider.class) |
| public class ServerTest extends CoreServerTest { |
| |
| @Data |
| private Project project; |
| |
| @Util |
| private MutateUtil util; |
| |
| /** |
| * Setup the needed projectspace. |
| */ |
| @Before |
| public void setupProjectSpace() { |
| CommonUtil.setTesting(true); |
| Configuration.setAutoSave(false); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| setProjectSpace(WorkspaceManager.getInstance().getCurrentWorkspace().importProject(project, "", "")); |
| } |
| }.run(false); |
| setProject(project); |
| } |
| |
| /** |
| * @throws EmfStoreException Problems with share, checkout, commit or update. |
| */ |
| @Test |
| public void shareCheckoutCommitUpdate() throws EmfStoreException { |
| |
| ProjectSpace projectSpace = getProjectSpace(); |
| |
| // share original project |
| PrimaryVersionSpec versionSpec = share(projectSpace); |
| |
| // checkout project |
| final ProjectSpace psCheckedout = checkout(projectSpace.getProjectInfo(), versionSpec); |
| |
| // compare original and checkedout project |
| FuzzyProjectTest.compareIgnoreOrder(projectSpace.getProject(), psCheckedout.getProject(), util); |
| |
| // change & commit original project |
| final ModelMutatorConfiguration mmc = FuzzyProjectTest.getModelMutatorConfiguration(projectSpace.getProject(), |
| util); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| util.mutate(mmc); |
| } |
| }.run(false); |
| |
| commit(projectSpace); |
| |
| // update checkedout project |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| try { |
| psCheckedout.update(); |
| } catch (EmfStoreException e) { |
| throw new RuntimeException(e); |
| } |
| } |
| }.run(false); |
| |
| // compare original and updated project |
| FuzzyProjectTest.compareIgnoreOrder(projectSpace.getProject(), psCheckedout.getProject(), util); |
| } |
| } |