package com.opengamma.sesame.credit.market;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.opengamma.analytics.financial.credit.RestructuringClause;
import com.opengamma.core.legalentity.SeniorityLevel;
import com.opengamma.financial.analytics.isda.credit.CreditCurveDataKey;
import com.opengamma.financial.security.credit.LegacyCDSSecurity;
import com.opengamma.financial.security.swap.InterestRateNotional;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalScheme;
import com.opengamma.sesame.Environment;
import com.opengamma.util.money.Currency;
import com.opengamma.util.result.Result;
import com.opengamma.util.test.TestGroup;
/**
* Tests credit curve data key inference for {@link LegacyCDSSecurity}.
*/
@Test(groups = TestGroup.UNIT)
public class DefaultLegacyCdsMarketDataResolverFnTest {
private RestructuringClause _clause;
private SeniorityLevel _seniority;
private ExternalId _refEntity;
private Currency _ccy;
private LegacyCDSSecurity _sec;
private DefaultLegacyCdsMarketDataResolverFn _fn;
private Environment _env;
@BeforeMethod
public void beforeMethod() {
_clause = RestructuringClause.CR;
_seniority = SeniorityLevel.JRSUBUT2;
_refEntity = ExternalId.of(ExternalScheme.of("refentity"), "test");
_ccy = Currency.USD;
_sec = mock(LegacyCDSSecurity.class);
when(_sec.getNotional()).thenReturn(new InterestRateNotional(_ccy, 0));
when(_sec.getReferenceEntity()).thenReturn(_refEntity);
when(_sec.getSeniority()).thenReturn(_seniority);
when(_sec.getRestructuringClause()).thenReturn(_clause);
_env = mock(Environment.class);
CreditKeyMapperFn sameKeyMapper = new CreditKeyMapperFn() {
@Override
public Result<CreditCurveDataKey> getMapping(CreditCurveDataKey key) {
return Result.success(key);
}
};
_fn = new DefaultLegacyCdsMarketDataResolverFn(sameKeyMapper);
}
@Test
public void resolve() {
Result<CreditCurveDataKey> result = _fn.resolve(_env, _sec);
assertTrue("Expected success", result.isSuccess());
CreditCurveDataKey key = result.getValue();
assertEquals(_clause, key.getRestructuring());
assertEquals(_seniority, key.getSeniority());
assertEquals(_ccy, key.getCurrency());
assertEquals(_refEntity.getValue(), key.getCurveName());
}
}