/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.livedata;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import java.util.Collection;
import org.testng.annotations.Test;
import com.opengamma.id.ExternalId;
import com.opengamma.livedata.msg.LiveDataSubscriptionResponse;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class ResubscribingLiveDataClientTest {
private static final ExternalId ID1 = ExternalId.of("scheme", "1");
private static final ExternalId ID2 = ExternalId.of("scheme", "2");
private static final LiveDataSpecification SPEC1 = new LiveDataSpecification("rules", ID1);
private static final LiveDataSpecification SPEC2 = new LiveDataSpecification("rules", ID2);
@Test
public void subscribe() {
LiveDataClient delegate = mock(LiveDataClient.class);
ResubscribingLiveDataClient client = new ResubscribingLiveDataClient(delegate);
Listener listener = new Listener();
client.subscribe(UserPrincipal.getTestUser(), SPEC1, listener);
client.subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC1, listener);
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
reset(delegate);
client.resubscribe();
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC1, listener);
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
}
@Test
public void unsubscribe() {
LiveDataClient delegate = mock(LiveDataClient.class);
ResubscribingLiveDataClient client = new ResubscribingLiveDataClient(delegate);
Listener listener = new Listener();
client.subscribe(UserPrincipal.getTestUser(), SPEC1, listener);
client.subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
client.unsubscribe(UserPrincipal.getTestUser(), SPEC1, listener);
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC1, listener);
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
verify(delegate).unsubscribe(UserPrincipal.getTestUser(), SPEC1, listener);
reset(delegate);
client.resubscribe();
verify(delegate).subscribe(UserPrincipal.getTestUser(), SPEC2, listener);
}
private static class Listener implements LiveDataListener {
@Override
public void subscriptionResultReceived(LiveDataSubscriptionResponse subscriptionResult) {
}
@Override
public void subscriptionResultsReceived(Collection<LiveDataSubscriptionResponse> subscriptionResults) {
}
@Override
public void subscriptionStopped(LiveDataSpecification fullyQualifiedSpecification) {
}
@Override
public void valueUpdate(LiveDataValueUpdate valueUpdate) {
}
}
}