/******************************************************************************* * Copyright (c) 2015 Boeing. * 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: * Boeing - initial API and implementation *******************************************************************************/ package org.eclipse.osee.ats.client.integration.tests.ats.resource; import com.google.common.collect.Lists; import java.io.InputStream; import java.util.List; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.api.util.IAtsChangeSet; import org.eclipse.osee.ats.client.integration.tests.AtsClientService; import org.eclipse.osee.ats.client.integration.tests.DirtyArtifactCacheTest; import org.eclipse.osee.ats.core.util.AtsUtilCore; import org.eclipse.osee.define.report.api.WordArtifactChange; import org.eclipse.osee.define.report.api.WordUpdateChange; import org.eclipse.osee.define.report.api.WordUpdateData; import org.eclipse.osee.define.report.api.WordUpdateEndpoint; import org.eclipse.osee.framework.core.data.BranchId; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.BranchType; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.enums.QueryOption; import org.eclipse.osee.framework.core.model.cache.BranchFilter; import org.eclipse.osee.framework.jdk.core.util.Lib; import org.eclipse.osee.framework.skynet.core.UserManager; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery; import org.eclipse.osee.framework.skynet.core.httpRequests.HttpWordUpdateRequest; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * Test unit for {@link WordUpdateEndpoint} * * @author David W. Miller */ public class WordUpdateEndpointImplTest extends AbstractRestTest { private Artifact artReqt = null; private BranchId branch = null; @AfterClass public static void cleanup() { List teamWorkflows = ArtifactQuery.getArtifactListFromTypeAndName(AtsArtifactTypes.TeamWorkflow, "Safety", AtsUtilCore.getAtsBranch(), QueryOption.CONTAINS_MATCH_OPTIONS); IAtsChangeSet changes = AtsClientService.get().getStoreService().createAtsChangeSet(WordUpdateEndpointImplTest.class.getSimpleName()); for (Artifact teamArt : teamWorkflows) { changes.deleteArtifact(teamArt); } changes.executeIfNeeded(); new DirtyArtifactCacheTest().testArtifactCacheNotDirty(); } @Before public void setup() { branch = getWorkingBranch(); artReqt = ArtifactQuery.getArtifactFromTypeAndAttribute(CoreArtifactTypes.SoftwareRequirement, CoreAttributeTypes.Name, "Claw Interface Init 15", branch); } @Test public void testCreate() throws Exception { // get word xml String wordData = getResource(); List transferArts = Lists.newLinkedList(); transferArts.add(artReqt.getUuid()); wordData = wordData.replaceAll("ABCgi5iUkGgj2zhlrOgA", artReqt.getGuid()); WordUpdateChange change = makeRequest(branch.getUuid(), transferArts, wordData, "Testing word update one artifact"); validateWordUpdateChange(change); validateSafetyTeamWFExists(); } @Test public void testMissingArtifact() throws Exception { // get word xml InputStream inputStream = getClass().getResourceAsStream("data/testMissingArtifact.xml"); String wordData = Lib.inputStreamToString(inputStream); wordData = wordData.replaceAll("A0UNsNvCigV4SyvaCCAA", artReqt.getGuid()); List transferArts = Lists.newLinkedList(); transferArts.add(artReqt.getUuid()); WordUpdateChange change = makeRequest(branch.getUuid(), transferArts, wordData, "Testing word update one artifact"); validateWordUpdateChange(change); } private void validateWordUpdateChange(WordUpdateChange change) { List changes = change.getChangedArts(); Assert.assertTrue(changes.size() == 1); WordArtifactChange wac = changes.get(0); Assert.assertEquals(wac.getArtId(), artReqt.getUuid().longValue()); } private void validateSafetyTeamWFExists() { List teamWorkflows = ArtifactQuery.getArtifactListFromTypeAndName(AtsArtifactTypes.TeamWorkflow, "Safety Workflow", AtsUtilCore.getAtsBranch(), QueryOption.CONTAINS_MATCH_OPTIONS); Assert.assertFalse(teamWorkflows.isEmpty()); } private WordUpdateChange makeRequest(long branchId, List artifacts, String wordData, String comment) { byte[] data = wordData.getBytes(); WordUpdateData wud = new WordUpdateData(); wud.setWordData(data); wud.setArtifacts(artifacts); wud.setBranch(branchId); wud.setThreeWayMerge(false); wud.setComment(comment); wud.setMultiEdit(false); wud.setUserArtId((long) UserManager.getUser().getArtId()); WordUpdateChange change = HttpWordUpdateRequest.updateWordArtifacts(wud); return change; } private BranchId getWorkingBranch() { BranchId branchReturn = null; BranchFilter branchFilter = new BranchFilter(BranchType.WORKING); List branches = BranchManager.getBranches(branchFilter); for (IOseeBranch branch : branches) { if (branch.getName().contains("More Reqt")) { branchReturn = branch; break; } } return branchReturn; } private String getResource() throws Exception { InputStream inputStream = getClass().getResourceAsStream("data/testSoftwareRequirement.xml"); return Lib.inputStreamToString(inputStream); } }