/**
* Revenue Settlement and Sharing System GE
* Copyright (C) 2011-2014, Javier Lucio - lucio@tid.es
* Telefonica Investigacion y Desarrollo, S.A.
*
* Copyright (C) 2015, CoNWeT Lab., Universidad Politénica de Madrid
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package es.upm.fiware.rss.service;
import java.util.List;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import es.upm.fiware.rss.dao.DbeAggregatorDao;
import es.upm.fiware.rss.dao.DbeAppProviderDao;
import es.upm.fiware.rss.dao.ModelProviderDao;
import es.upm.fiware.rss.dao.SetRevenueShareConfDao;
import es.upm.fiware.rss.exception.RSSException;
import es.upm.fiware.rss.model.DbeAggregator;
import es.upm.fiware.rss.model.DbeAppProvider;
import es.upm.fiware.rss.model.DbeAppProviderId;
import es.upm.fiware.rss.model.ModelProvider;
import es.upm.fiware.rss.model.ModelProviderId;
import es.upm.fiware.rss.model.RSSModel;
import es.upm.fiware.rss.model.SetRevenueShareConf;
import es.upm.fiware.rss.model.SetRevenueShareConfId;
import es.upm.fiware.rss.model.SharingReport;
import es.upm.fiware.rss.model.StakeholderModel;
import java.math.BigDecimal;
import java.util.AbstractSet;
import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
import org.mockito.InjectMocks;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import org.mockito.Mock;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.mockito.MockitoAnnotations;
public class RSSModelsManagerTest {
/***
* Logging system.
*/
private final Logger logger = LoggerFactory.getLogger(RSSModelsManagerTest.class);
@Mock private DbeAppProviderDao appProviderDao;
@Mock private SetRevenueShareConfDao revenueShareConfDao;
@Mock private DbeAggregatorDao aggregatorDao;
@Mock private ModelProviderDao modelProviderDao;
@InjectMocks private RSSModelsManager toTest;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void checkValidAppProviderTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String appProviderId = "provider@mail.com";
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(aggregatorId, appProviderId)).thenReturn(provModel);
toTest.checkValidAppProvider(aggregatorId, appProviderId);
}
@Test
(expected = RSSException.class)
public void checkValidAppProviderRSSExceptionNonExistentResourceTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String appProviderId = "provider@mail.com";
when(appProviderDao.getProvider(aggregatorId, appProviderId)).thenReturn(null);
toTest.checkValidAppProvider(aggregatorId, appProviderId);
}
@Test
(expected = RSSException.class)
public void checkValidAppProviderRSSExceptionInvalidParameterTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String appProviderId = "provider@mail.com";
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", "other@mail.com");
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(aggregatorId, appProviderId)).thenReturn(provModel);
toTest.checkValidAppProvider(aggregatorId, appProviderId);
}
@Test
public void checkValidRSSModelTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
public void checkValidRSSModel2Test() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = null;
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType("FIXED_PERCENTAGE");
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(50));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void checkValidRSSModelRSSExceptionCheckFieldNullTest() throws RSSException {
String aggregatorId = null;
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = null;
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void checkValidRSSModelRSSExceptionCheckFieldVoidTest() throws RSSException {
String aggregatorId = "";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = null;
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void checkValidRSSModelRSSExceptionCheckNumberFieldTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = null;
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(null);
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void checkValidRSSModelRSSExceptionInvalidParameterTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "aggregator@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.checkValidRSSModel(rSSModel);
}
@Test
public void convertIntoApiModelTest() {
String aggregatorId = "aggregator@mail.com";
String aggregatorName = "aggregatorName";
String appProviderId = "appProvider@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String stakeholderId = "stakeholderId@mail.com";
DbeAggregator dbeAggregator = new DbeAggregator(aggregatorName, aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
DbeAppProvider dbeAppProvider = new DbeAppProvider();
SetRevenueShareConfId setRevenueShareConfId = new SetRevenueShareConfId();
Set <ModelProvider> stakeholders = new HashSet<ModelProvider>();
SetRevenueShareConf setRevenueShareConf = new SetRevenueShareConf();
ModelProviderId modelProviderId = new ModelProviderId();
ModelProvider modelProvider = new ModelProvider();
dbeAppProviderId.setTxAppProviderId(appProviderId);
dbeAppProvider.setId(dbeAppProviderId);
setRevenueShareConfId.setModelOwner(dbeAppProvider);
setRevenueShareConfId.setProductClass(algorithmType);
stakeholders.add(modelProvider);
setRevenueShareConf.setAggregator(dbeAggregator);
setRevenueShareConf.setAggregatorValue(BigDecimal.ZERO);
setRevenueShareConf.setAlgorithmType(algorithmType);
setRevenueShareConf.setId(setRevenueShareConfId);
setRevenueShareConf.setOwnerValue(BigDecimal.ZERO);
setRevenueShareConf.setStakeholders(stakeholders);
modelProvider.setId(modelProviderId);
modelProvider.setModel(setRevenueShareConf);
modelProvider.setModelValue(BigDecimal.ZERO);
modelProvider.setStakeholder(dbeAppProvider);
toTest.convertIntoApiModel(setRevenueShareConf);
}
@Test
public void createRssModelTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
toTest.createRssModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void createRssModelRSSExceptionTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
doThrow(org.hibernate.NonUniqueObjectException.class).when(revenueShareConfDao).create(any(SetRevenueShareConf.class));
toTest.createRssModel(rSSModel);
}
@Test
public void deleteRssModelTest() throws Exception {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
List<SetRevenueShareConf> revenueShareConfs = new LinkedList<>();
Set<ModelProvider> stakeholders = new HashSet<>();
ModelProvider modelProvider = new ModelProvider();
stakeholders.add(modelProvider);
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.ZERO);
revenueShareConf.setAlgorithmType(algorithmType);
revenueShareConf.setId(null);
revenueShareConf.setOwnerValue(BigDecimal.ZERO);
revenueShareConf.setStakeholders(stakeholders);
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(revenueShareConfs);
toTest.deleteRssModel(aggregatorId, appProviderId, productClass);
}
@Test
public void deleteRssModel2Test() throws Exception {
String aggregatorId = "aggregator@mail.com";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProviderId = "aggregator@mail.com";
String productClass = "productClass@mail.com";
String stakeholderId = "stakeholder@mail.com";
String appProviderId = "provider@mail.com";
List <StakeholderModel> holdersModel = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
stakeholderModel.setModelValue(BigDecimal.valueOf(20));
stakeholderModel.setStakeholderId(stakeholderId);
holdersModel.add(stakeholderModel);
RSSModel rSSModel = new RSSModel();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProviderId);
rSSModel.setOwnerValue(BigDecimal.valueOf(30));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(holdersModel);
DbeAggregator dbeAggregator = new DbeAggregator("aggegatorName", aggregatorId);
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(appProviderId);
DbeAppProvider provModel = new DbeAppProvider();
provModel.setId(dbeAppProviderId);
provModel.setModels(null);
provModel.setTxCorrelationNumber(Integer.MIN_VALUE);
provModel.setTxName(appProviderId);
provModel.setTxTimeStamp(new Date());
Set<ModelProvider> stakeholders = new HashSet<>();
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.ZERO);
revenueShareConf.setAlgorithmType(algorithmType);
revenueShareConf.setId(null);
revenueShareConf.setOwnerValue(BigDecimal.ZERO);
revenueShareConf.setStakeholders(stakeholders);
when(appProviderDao.getProvider(anyString(), anyString())).thenReturn(provModel);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(null);
toTest.deleteRssModel(aggregatorId, appProviderId, productClass);
}
@Test
(expected = RSSException.class)
public void deleteRssModelRSSExceptionAggregatorNullTest() throws Exception {
String aggregatorId = null;
String productClass = "productClass";
String appProviderId = "provider@mail.com";
toTest.deleteRssModel(aggregatorId, appProviderId, productClass);
}
@Test
(expected = RSSException.class)
public void deleteRssModelRSSExceptionAggregatorEmptyTest() throws Exception {
String aggregatorId = "";
String productClass = "productClass@mail.com";
String appProviderId = "provider@mail.com";
toTest.deleteRssModel(aggregatorId, appProviderId, productClass);
}
@Test
public void existModelTrueTest() {
String aggregatorId = "aggregatorId@mail.com";
String productClass = "productClass@mail.com";
String appProviderId = "provider@mail.com";
List <SetRevenueShareConf> revenueShareConfs = mock(LinkedList.class);
when(revenueShareConfs.isEmpty()).thenReturn(false);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(revenueShareConfs);
boolean returned = toTest.existModel(aggregatorId, appProviderId, productClass);
Assert.assertTrue(returned);
}
@Test
public void existModelFalse1Test() {
String aggregatorId = "aggregatorId@mail.com";
String productClass = "productClass@mail.com";
String appProviderId = "provider@mail.com";
List <SetRevenueShareConf> revenueShareConfs = mock(LinkedList.class);
when(revenueShareConfs.isEmpty()).thenReturn(true);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(revenueShareConfs);
boolean returned = toTest.existModel(aggregatorId, appProviderId, productClass);
Assert.assertFalse(returned);
}
@Test
public void existModelFalse2Test() {
String aggregatorId = "aggregatorId@mail.com";
String productClass = "productClass@mail.com";
String appProviderId = "provider@mail.com";
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(null);
boolean returned = toTest.existModel(aggregatorId, appProviderId, productClass);
Assert.assertFalse(returned);
}
@Test
public void getRssModelsTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String appProviderId = "appProvider@mail.com";
String productClass = "productClass";
DbeAppProvider dbeAppProvider = new DbeAppProvider();
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
DbeAggregator dbeAggregator = new DbeAggregator(aggregatorId, aggregatorId);
List <SetRevenueShareConf> revenueShareConfs = new LinkedList<>();
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
SetRevenueShareConfId revenueShareConfId = new SetRevenueShareConfId();
Set <ModelProvider> modelProviders = new HashSet<>();
ModelProvider modelProvider = new ModelProvider();
ModelProviderId modelProviderId = new ModelProviderId();
dbeAppProvider.setId(dbeAppProviderId);
dbeAppProviderId.setAggregator(dbeAggregator);
revenueShareConfs.add(revenueShareConf);
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.valueOf(50));
revenueShareConf.setAlgorithmType("");
revenueShareConf.setId(revenueShareConfId);
revenueShareConf.setOwnerValue(BigDecimal.valueOf(40));
revenueShareConf.setStakeholders(modelProviders);
revenueShareConfId.setModelOwner(dbeAppProvider);
revenueShareConfId.setProductClass(productClass);
modelProviders.add(modelProvider);
modelProvider.setId(modelProviderId);
modelProvider.setModel(revenueShareConf);
modelProvider.setModelValue(BigDecimal.valueOf(10));
modelProvider.setStakeholder(dbeAppProvider);
modelProviderId.setModel(revenueShareConf);
modelProviderId.setStakeholder(dbeAppProvider);
when(appProviderDao.getProvider(aggregatorId, appProviderId)).thenReturn(dbeAppProvider);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(revenueShareConfs);
toTest.getRssModels(aggregatorId, appProviderId, productClass);
}
@Test
public void getRssModelsNullArgumentsTest() throws RSSException {
String aggregatorId = "aggregator@mail.com";
String appProviderId = "appProvider@mail.com";
String productClass = "productClass";
DbeAppProvider dbeAppProvider = new DbeAppProvider();
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
DbeAggregator dbeAggregator = new DbeAggregator(aggregatorId, aggregatorId);
List <SetRevenueShareConf> revenueShareConfs = new LinkedList<>();
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
SetRevenueShareConfId revenueShareConfId = new SetRevenueShareConfId();
Set <ModelProvider> modelProviders = new HashSet<>();
ModelProvider modelProvider = new ModelProvider();
ModelProviderId modelProviderId = new ModelProviderId();
dbeAppProvider.setId(dbeAppProviderId);
dbeAppProviderId.setAggregator(dbeAggregator);
revenueShareConfs.add(revenueShareConf);
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.valueOf(50));
revenueShareConf.setAlgorithmType("");
revenueShareConf.setId(revenueShareConfId);
revenueShareConf.setOwnerValue(BigDecimal.valueOf(40));
revenueShareConf.setStakeholders(modelProviders);
revenueShareConfId.setModelOwner(dbeAppProvider);
revenueShareConfId.setProductClass(productClass);
modelProviders.add(modelProvider);
modelProvider.setId(modelProviderId);
modelProvider.setModel(revenueShareConf);
modelProvider.setModelValue(BigDecimal.valueOf(10));
modelProvider.setStakeholder(dbeAppProvider);
modelProviderId.setModel(revenueShareConf);
modelProviderId.setStakeholder(dbeAppProvider);
when(appProviderDao.getProvider(aggregatorId, appProviderId)).thenReturn(dbeAppProvider);
when(revenueShareConfDao.getRevenueModelsByParameters(aggregatorId,
appProviderId, productClass)).thenReturn(revenueShareConfs);
toTest.getRssModels(aggregatorId, null, productClass);
}
@Test
public void updateRssModelTest() throws Exception {
String aggregatorId = "aggregator@mail.com";
String productClass = "productClass";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProvider = "provider@mail.com";
String appProviderId = "appProvider@mail.com";
RSSModel rSSModel = new RSSModel();
List <StakeholderModel> stakeholderModels = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
DbeAppProvider dbeAppProvider = new DbeAppProvider();
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
DbeAggregator dbeAggregator = new DbeAggregator();
Set <SetRevenueShareConf> revenueShareConfs = new HashSet<>();
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
Set <SharingReport> sharingReports = new HashSet<>();
SharingReport sharingReport = new SharingReport();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProvider);
rSSModel.setOwnerValue(BigDecimal.valueOf(40));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(stakeholderModels);
stakeholderModels.add(stakeholderModel);
stakeholderModel.setModelValue(BigDecimal.valueOf(10));
stakeholderModel.setStakeholderId(aggregatorId);
dbeAppProvider.setId(dbeAppProviderId);
dbeAppProvider.setModels(revenueShareConfs);
dbeAppProvider.setReports(null);
dbeAppProvider.setTxCorrelationNumber(Integer.MIN_VALUE);
dbeAppProvider.setTxName(productClass);
dbeAppProvider.setTxTimeStamp(null);
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(ownerProvider);
dbeAggregator.setTxEmail(aggregatorId);
dbeAggregator.setTxName(aggregatorId);
revenueShareConfs.add(revenueShareConf);
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.ZERO);
revenueShareConf.setAlgorithmType(algorithmType);
revenueShareConf.setId(null);
revenueShareConf.setOwnerValue(BigDecimal.ZERO);
revenueShareConf.setStakeholders(null);
sharingReports.add(sharingReport);
when(appProviderDao.getProvider(anyString(), anyString()))
.thenReturn(dbeAppProvider);
when(revenueShareConfDao.getById(any(SetRevenueShareConfId.class))).thenReturn(revenueShareConf);
toTest.updateRssModel(rSSModel);
}
@Test
(expected = RSSException.class)
public void updateRssModelRSSExceptionTest() throws Exception {
String aggregatorId = "aggregator@mail.com";
String productClass = "productClass";
String algorithmType = "FIXED_PERCENTAGE";
String ownerProvider = "provider@mail.com";
String appProviderId = "appProvider@mail.com";
RSSModel rSSModel = new RSSModel();
List <StakeholderModel> stakeholderModels = new LinkedList<>();
StakeholderModel stakeholderModel = new StakeholderModel();
DbeAppProvider dbeAppProvider = new DbeAppProvider();
DbeAppProviderId dbeAppProviderId = new DbeAppProviderId();
DbeAggregator dbeAggregator = new DbeAggregator();
Set <SetRevenueShareConf> revenueShareConfs = new HashSet<>();
SetRevenueShareConf revenueShareConf = new SetRevenueShareConf();
Set <SharingReport> sharingReports = new HashSet<>();
SharingReport sharingReport = new SharingReport();
rSSModel.setAggregatorId(aggregatorId);
rSSModel.setAggregatorShare(BigDecimal.valueOf(50));
rSSModel.setAlgorithmType(algorithmType);
rSSModel.setOwnerProviderId(ownerProvider);
rSSModel.setOwnerValue(BigDecimal.valueOf(40));
rSSModel.setProductClass(productClass);
rSSModel.setStakeholders(stakeholderModels);
stakeholderModels.add(stakeholderModel);
stakeholderModel.setModelValue(BigDecimal.valueOf(10));
stakeholderModel.setStakeholderId(aggregatorId);
dbeAppProvider.setId(dbeAppProviderId);
dbeAppProvider.setModels(revenueShareConfs);
dbeAppProvider.setReports(null);
dbeAppProvider.setTxCorrelationNumber(Integer.MIN_VALUE);
dbeAppProvider.setTxName(productClass);
dbeAppProvider.setTxTimeStamp(null);
dbeAppProviderId.setAggregator(dbeAggregator);
dbeAppProviderId.setTxAppProviderId(ownerProvider);
dbeAggregator.setTxEmail(aggregatorId);
dbeAggregator.setTxName(aggregatorId);
revenueShareConfs.add(revenueShareConf);
revenueShareConf.setAggregator(dbeAggregator);
revenueShareConf.setAggregatorValue(BigDecimal.ZERO);
revenueShareConf.setAlgorithmType(algorithmType);
revenueShareConf.setId(null);
revenueShareConf.setOwnerValue(BigDecimal.ZERO);
revenueShareConf.setStakeholders(null);
sharingReports.add(sharingReport);
when(appProviderDao.getProvider(anyString(), anyString()))
.thenReturn(dbeAppProvider);
when(revenueShareConfDao.getById(any(SetRevenueShareConfId.class))).thenReturn(null);
toTest.updateRssModel(rSSModel);
}
}