Search in sources :

Example 1 with Project

use of org.ligoj.app.model.Project in project ligoj-api by ligoj.

the class ToVoConverterTest method apply.

@Test
public void apply() {
    // Sub user repository
    final IamProvider iamProvider = Mockito.mock(IamProvider.class);
    final IUserRepository userRepository = Mockito.mock(IUserRepository.class);
    final IamConfiguration configuration = new IamConfiguration();
    configuration.setUserRepository(userRepository);
    Mockito.when(iamProvider.getConfiguration()).thenReturn(configuration);
    Mockito.when(userRepository.findById(ArgumentMatchers.anyString())).then(invocation -> toUser((String) invocation.getArguments()[0]));
    // Stub subscriptions
    final List<Object[]> subscriptions = new ArrayList<>();
    final Parameter parameter1 = new Parameter();
    parameter1.setId(IdentityResource.PARAMETER_GROUP);
    parameter1.setType(ParameterType.TEXT);
    parameter1.setOwner(new Node());
    final Parameter parameter2 = new Parameter();
    parameter2.setId(IdentityResource.PARAMETER_GROUP);
    parameter2.setType(ParameterType.TEXT);
    parameter2.setOwner(new Node());
    final Parameter parameter3 = new Parameter();
    parameter3.setId("any");
    parameter3.setType(ParameterType.TEXT);
    parameter3.setOwner(new Node());
    final ParameterValue value1 = new ParameterValue();
    value1.setId(1);
    value1.setParameter(parameter1);
    value1.setData("G");
    final ParameterValue value2 = new ParameterValue();
    value2.setId(2);
    value2.setParameter(parameter2);
    value2.setData("any");
    final ParameterValue value3 = new ParameterValue();
    value3.setId(3);
    value3.setParameter(parameter3);
    value3.setData("any");
    final Subscription subscription = new Subscription();
    subscription.setId(1);
    final Node node = new Node();
    node.setId("service:n2");
    subscription.setNode(node);
    subscriptions.add(new Object[] { subscription, value1 });
    subscriptions.add(new Object[] { subscription, value2 });
    subscriptions.add(new Object[] { subscription, value3 });
    // Subscription without status
    final Subscription subscription2 = new Subscription();
    subscription2.setId(-1);
    final Node node2 = new Node();
    node2.setId("service:n1");
    subscription2.setNode(node2);
    subscriptions.add(new Object[] { subscription2, value3 });
    // Stub events
    final Map<Integer, EventVo> events = new HashMap<>();
    final EventVo event = new EventVo();
    event.setSubscription(1);
    event.setNode(new NodeVo());
    event.setValue("UP");
    events.put(1, event);
    // Call
    final ToVoConverter converter = new ToVoConverter(this::toUser, subscriptions, events);
    final Project entity = new Project();
    entity.setId(1);
    entity.setName("N");
    entity.setDescription("D");
    entity.setLastModifiedBy("U1");
    entity.setLastModifiedDate(new Date());
    entity.setCreatedBy("U2");
    entity.setCreatedDate(new Date());
    entity.setPkey("PK");
    entity.setTeamLeader("U3");
    entity.setSubscriptions(Arrays.asList(new Subscription[] { subscription, subscription2 }));
    final ProjectVo vo = converter.apply(entity);
    // Check
    Assertions.assertEquals("N", vo.getName());
    Assertions.assertEquals("D", vo.getDescription());
    Assertions.assertEquals("PK", vo.getPkey());
    Assertions.assertEquals("U2", vo.getCreatedBy().getId());
    Assertions.assertNotNull(vo.getCreatedDate());
    Assertions.assertEquals("U1", vo.getLastModifiedBy().getId());
    Assertions.assertNotNull(vo.getLastModifiedDate());
    Assertions.assertEquals("U3", vo.getTeamLeader().getId());
    Assertions.assertEquals(1, vo.getId().intValue());
    Assertions.assertEquals(2, vo.getSubscriptions().size());
    // Check the statuses and their order by node
    final List<SubscriptionVo> subscriptionsVo = vo.getSubscriptions();
    Assertions.assertNull(subscriptionsVo.get(0).getStatus());
    Assertions.assertEquals("service:n1", subscriptionsVo.get(0).getNode().getId());
    Assertions.assertEquals(NodeStatus.UP, subscriptionsVo.get(1).getStatus());
    Assertions.assertEquals("service:n2", subscriptionsVo.get(1).getNode().getId());
}
Also used : ParameterValue(org.ligoj.app.model.ParameterValue) HashMap(java.util.HashMap) Node(org.ligoj.app.model.Node) ArrayList(java.util.ArrayList) IUserRepository(org.ligoj.app.iam.IUserRepository) IamProvider(org.ligoj.app.iam.IamProvider) Date(java.util.Date) Project(org.ligoj.app.model.Project) Parameter(org.ligoj.app.model.Parameter) IamConfiguration(org.ligoj.app.iam.IamConfiguration) Subscription(org.ligoj.app.model.Subscription) SubscriptionVo(org.ligoj.app.resource.subscription.SubscriptionVo) NodeVo(org.ligoj.app.api.NodeVo) EventVo(org.ligoj.app.resource.node.EventVo) Test(org.junit.jupiter.api.Test)

Example 2 with Project

use of org.ligoj.app.model.Project in project ligoj-api by ligoj.

the class ProjectResource method toEntity.

/**
 * /** Converter from {@link ProjectEditionVo} to {@link Project}
 */
private static Project toEntity(final ProjectEditionVo vo) {
    final Project entity = new Project();
    // map project
    DescribedBean.copy(vo, entity);
    entity.setPkey(vo.getPkey());
    entity.setTeamLeader(vo.getTeamLeader());
    return entity;
}
Also used : Project(org.ligoj.app.model.Project)

Example 3 with Project

use of org.ligoj.app.model.Project in project ligoj-api by ligoj.

the class ToVoConverter method apply.

@Override
public ProjectVo apply(final Project entity) {
    final ProjectVo vo = new ProjectVo();
    vo.copyAuditData(entity, userConverter);
    DescribedBean.copy(entity, vo);
    vo.setPkey(entity.getPkey());
    vo.setTeamLeader(userConverter.apply(entity.getTeamLeader()));
    // Build the subscriptions
    final Map<Integer, SubscriptionVo> subscriptions = new TreeMap<>();
    for (final Object[] resultSet : this.subscriptionsAndParam) {
        // Add subscription value
        final ParameterValue parameterValue = (ParameterValue) resultSet[1];
        addVo(subscriptions, (Subscription) resultSet[0]).getParameters().put(parameterValue.getParameter().getId(), ParameterValueResource.parseValue(parameterValue, new ParameterValueVo()));
    }
    // Merge with subscription without parameters
    entity.getSubscriptions().forEach(s -> addVo(subscriptions, s));
    // Return the subscription to order by the related node
    vo.setSubscriptions(subscriptions.values().stream().sorted(Comparator.comparing(s -> s.getNode().getId(), String::compareTo)).collect(Collectors.toList()));
    return vo;
}
Also used : ParameterValueResource(org.ligoj.app.resource.node.ParameterValueResource) NodeStatus(org.ligoj.app.api.NodeStatus) SubscriptionVo(org.ligoj.app.resource.subscription.SubscriptionVo) HashMap(java.util.HashMap) EventVo(org.ligoj.app.resource.node.EventVo) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) ParameterValueVo(org.ligoj.app.resource.node.ParameterValueVo) List(java.util.List) NodeResource(org.ligoj.app.resource.node.NodeResource) TreeMap(java.util.TreeMap) Map(java.util.Map) UserOrg(org.ligoj.app.iam.UserOrg) Subscription(org.ligoj.app.model.Subscription) Comparator(java.util.Comparator) ParameterValue(org.ligoj.app.model.ParameterValue) Project(org.ligoj.app.model.Project) DescribedBean(org.ligoj.bootstrap.core.DescribedBean) ParameterValueVo(org.ligoj.app.resource.node.ParameterValueVo) ParameterValue(org.ligoj.app.model.ParameterValue) TreeMap(java.util.TreeMap) SubscriptionVo(org.ligoj.app.resource.subscription.SubscriptionVo)

Example 4 with Project

use of org.ligoj.app.model.Project in project ligoj-api by ligoj.

the class ProjectResourceTest method updateWithSubscriptions.

/**
 * test update
 */
@Test
public void updateWithSubscriptions() {
    final ProjectEditionVo vo = new ProjectEditionVo();
    vo.setId(testProject.getId());
    vo.setName("Name");
    vo.setDescription("Description");
    vo.setPkey("artifact-id");
    vo.setTeamLeader(DEFAULT_USER);
    resource.update(vo);
    em.flush();
    em.clear();
    final Project projFromDB = repository.findOne(testProject.getId());
    Assertions.assertEquals("Name", projFromDB.getName());
    Assertions.assertEquals("Description", projFromDB.getDescription());
    Assertions.assertEquals("mda", projFromDB.getPkey());
    Assertions.assertEquals(DEFAULT_USER, projFromDB.getTeamLeader());
}
Also used : Project(org.ligoj.app.model.Project) AbstractOrgTest(org.ligoj.app.resource.AbstractOrgTest) Test(org.junit.jupiter.api.Test)

Example 5 with Project

use of org.ligoj.app.model.Project in project ligoj-api by ligoj.

the class ProjectResourceTest method setUpEntities2.

@BeforeEach
public void setUpEntities2() {
    resource = new ProjectResource();
    applicationContext.getAutowireCapableBeanFactory().autowireBean(resource);
    resource.iamProvider = new IamProvider[] { iamProvider };
    testProject = repository.findByName("MDA");
    // Ensure LDAP cache is loaded
    em.flush();
    em.clear();
    // For coverage issue with JPA
    new Project().setSubscriptions(null);
}
Also used : Project(org.ligoj.app.model.Project) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

Project (org.ligoj.app.model.Project)21 Test (org.junit.jupiter.api.Test)12 AbstractOrgTest (org.ligoj.app.resource.AbstractOrgTest)9 Subscription (org.ligoj.app.model.Subscription)6 SubscriptionVo (org.ligoj.app.resource.subscription.SubscriptionVo)3 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 BeforeEach (org.junit.jupiter.api.BeforeEach)2 Node (org.ligoj.app.model.Node)2 Parameter (org.ligoj.app.model.Parameter)2 ParameterValue (org.ligoj.app.model.ParameterValue)2 EventVo (org.ligoj.app.resource.node.EventVo)2 Comparator (java.util.Comparator)1 Date (java.util.Date)1 List (java.util.List)1 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 DELETE (javax.ws.rs.DELETE)1