blob: 5dcc61606f3de776394ae558de281135e5a321f7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* 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:
* chodnick
******************************************************************************/
package org.eclipse.emf.emfstore.client.changetracking.test.notification;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.eclipse.emf.emfstore.client.test.common.cases.ESTest;
import org.eclipse.emf.emfstore.client.test.common.dsl.Create;
import org.eclipse.emf.emfstore.client.test.common.dsl.TestElementFeatures;
import org.eclipse.emf.emfstore.client.test.common.dsl.Update;
import org.eclipse.emf.emfstore.client.test.common.util.ProjectUtil;
import org.eclipse.emf.emfstore.internal.client.model.exceptions.UnsupportedNotificationException;
import org.eclipse.emf.emfstore.internal.common.model.util.NotificationInfo;
import org.eclipse.emf.emfstore.test.model.TestElement;
import org.junit.Test;
/**
* Tests the notification recording for attribute features.
*
* @author chodnick
*/
public class AttributeNotificationTest extends ESTest {
private static final String NAME = "name"; //$NON-NLS-1$
private static final String NEW_NAME = "newName"; //$NON-NLS-1$
/**
* Change an attribute and check the generated notification.
*
* @throws UnsupportedOperationException on test fail
* @throws UnsupportedNotificationException on test fail
*/
@Test
public void changeAttribute() throws UnsupportedOperationException, UnsupportedNotificationException {
final TestElement useCase = Create.testElement();
ProjectUtil.addElement(getProjectSpace().toAPI(), useCase);
Update.testElement(TestElementFeatures.name(), useCase, NEW_NAME);
assertEquals(NEW_NAME, useCase.getName());
// exactly one SET notification is expected with attribute feature "name" on our useCase and newValue
// newName
final List<NotificationInfo> rec = getRecording().asMutableList();
assertEquals(1, rec.size());
final NotificationInfo n = rec.get(0);
assertSame(useCase, n.getNotifier());
assertTrue(n.isAttributeNotification());
assertTrue(n.isSetEvent());
assertEquals(n.getNewValue(), NEW_NAME);
assertEquals(n.getAttribute().getName(), NAME);
assertEquals(null, n.getOldValue());
}
}