/*******************************************************************************
* Copyright (c) 2010-2014 SAP 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.model.ext.maven.internal.recommendedupdatesites;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.util.UUID;
import org.eclipse.skalli.model.ValidationException;
import org.eclipse.skalli.model.ext.maven.recommendedupdatesites.RecommendedUpdateSites;
import org.eclipse.skalli.model.ext.maven.recommendedupdatesites.UpdateSite;
import org.eclipse.skalli.testutil.HashMapPersistenceService;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("nls")
public class RecommendedUpdateSitesServiceImplTest {
private static final String TEST_USER_ID = "User12345";
private UUID projectUUid = TestUUIDs.TEST_UUIDS[1];
private RecommendedUpdateSitesServiceImpl recommendedUpdateSitesService;
private static class TestRecommendedUpdateSitesService extends RecommendedUpdateSitesServiceImpl {
public TestRecommendedUpdateSitesService() {
bindPersistenceService(new HashMapPersistenceService(RecommendedUpdateSites.class));
}
}
@Before
public void setup() {
recommendedUpdateSitesService = new TestRecommendedUpdateSitesService();
}
private UpdateSite createUpdatesite(String identifier) {
UpdateSite us = new UpdateSite();
us.setProjectUUID(projectUUid);
us.setGroupId("groupId" + identifier);
us.setArtifactId("artifactId" + identifier);
us.setName("name" + identifier);
us.setDescription("description" + identifier);
return us;
}
@Test
public void testPersistAndLoad() throws ValidationException {
RecommendedUpdateSites testUpdateSites = new RecommendedUpdateSites();
testUpdateSites.setUserId("owner123");
testUpdateSites.setDescription("My Test recommendedUpdatesites");
testUpdateSites.setUuid(TestUUIDs.TEST_UUIDS[0]);
testUpdateSites.setId("updateSiteId1234");
testUpdateSites.setName("name");
UpdateSite updateSite1 = createUpdatesite("1");
UpdateSite updateSite2 = createUpdatesite("2");
testUpdateSites.getUpdateSites().add(updateSite1);
testUpdateSites.getUpdateSites().add(updateSite2);
recommendedUpdateSitesService.persist(testUpdateSites, TEST_USER_ID);
RecommendedUpdateSites loadedUpdateSites = recommendedUpdateSitesService.loadEntity(
RecommendedUpdateSites.class, testUpdateSites.getUuid());
assertSame(loadedUpdateSites, testUpdateSites);
}
private void assertSame(RecommendedUpdateSites actual, RecommendedUpdateSites expected) {
assertThat(actual.getUuid(), is(expected.getUuid()));
assertThat(actual.getId(), is(expected.getId()));
assertThat(actual.getDescription(), is(expected.getDescription()));
assertThat(actual.getName(), is(expected.getName()));
assertThat(actual.getParentEntityId(), is(expected.getParentEntityId()));
assertThat(actual.getUserId(), is(expected.getUserId()));
assertThat(actual.getUpdateSites().size(), is(expected.getUpdateSites().size()));
for (UpdateSite expectedUpdateSite : actual.getUpdateSites()) {
assertThat(expected.getUpdateSites(), hasItem(expectedUpdateSite));
}
}
@Test
public void testGetRecommendedUpdateSites() throws ValidationException
{
final String userId = "owner1234";
final String updateSiteId = "Id1234";
RecommendedUpdateSites testUpdateSites = new RecommendedUpdateSites();
testUpdateSites.setUserId(userId);
testUpdateSites.setDescription("My Test recommendedUpdatesites");
testUpdateSites.setUuid(TestUUIDs.TEST_UUIDS[0]);
testUpdateSites.setId(updateSiteId);
testUpdateSites.setName("name");
UpdateSite updateSite1 = createUpdatesite("testGetRecommended");
UpdateSite updateSite2 = createUpdatesite("2");
testUpdateSites.getUpdateSites().add(updateSite1);
testUpdateSites.getUpdateSites().add(updateSite2);
recommendedUpdateSitesService.persist(testUpdateSites, TEST_USER_ID);
RecommendedUpdateSites foundSite = recommendedUpdateSitesService.getRecommendedUpdateSites(userId, updateSiteId);
assertSame(foundSite,testUpdateSites);
}
}