Search in sources :

Example 1 with EventVo

use of org.ligoj.app.resource.node.EventVo 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 EventVo

use of org.ligoj.app.resource.node.EventVo in project ligoj-api by ligoj.

the class ToVoConverter method addVo.

/**
 * Convert a {@link Subscription} to a {@link SubscriptionVo} with status, and put it in the target map if not
 * existing.
 *
 * @param subscriptions
 *            The map of already converted entities.
 * @param entity
 *            The {@link Subscription}
 * @return The related converted {@link SubscriptionVo} newly created or existing one.
 */
private SubscriptionVo addVo(final Map<Integer, SubscriptionVo> subscriptions, final Subscription entity) {
    return subscriptions.computeIfAbsent(entity.getId(), id -> {
        // Build the subscription root instance
        final SubscriptionVo vo = new SubscriptionVo();
        vo.copyAuditData(entity, userConverter);
        vo.setId(entity.getId());
        vo.setNode(NodeResource.toVo(entity.getNode()));
        vo.setParameters(new HashMap<>());
        subscriptions.put(entity.getId(), vo);
        // Add subscription status
        final EventVo lastEvent = subscriptionStatus.get(entity.getId());
        if (lastEvent != null) {
            vo.setStatus(NodeStatus.valueOf(lastEvent.getValue()));
        }
        return vo;
    });
}
Also used : SubscriptionVo(org.ligoj.app.resource.subscription.SubscriptionVo) EventVo(org.ligoj.app.resource.node.EventVo)

Example 3 with EventVo

use of org.ligoj.app.resource.node.EventVo in project ligoj-api by ligoj.

the class SubscriptionResourceTest method refreshStatuses.

@Test
public void refreshStatuses() throws IOException {
    persistEntities("csv", new Class[] { Event.class }, StandardCharsets.UTF_8.name());
    final int projectId = projectRepository.findByName("MDA").getId();
    final Map<Integer, EventVo> subscriptionStatus = resource.getStatusByProject(projectId);
    Assertions.assertEquals(1, subscriptionStatus.size());
    final Map<Integer, SubscriptionStatusWithData> statuses = resource.refreshStatuses(Collections.singleton(subscription));
    Assertions.assertEquals(1, statuses.size());
    final SubscriptionStatusWithData status = statuses.get(subscription);
    Assertions.assertEquals(subscription, status.getId().intValue());
    Assertions.assertEquals(NodeStatus.UP, status.getStatus());
    Assertions.assertEquals("service:bt:jira:4", status.getNode());
    Assertions.assertEquals(projectId, status.getProject().intValue());
    Assertions.assertNotNull(status.getParameters());
    Assertions.assertEquals(3, status.getParameters().size());
    Assertions.assertEquals("10074", status.getParameters().get("service:bt:jira:project"));
    Assertions.assertEquals("MDA", status.getParameters().get("service:bt:jira:pkey"));
    Assertions.assertEquals("http://localhost:8120", status.getParameters().get("service:bt:jira:url"));
}
Also used : SubscriptionStatusWithData(org.ligoj.app.api.SubscriptionStatusWithData) EventVo(org.ligoj.app.resource.node.EventVo) Test(org.junit.jupiter.api.Test) AbstractOrgTest(org.ligoj.app.resource.AbstractOrgTest)

Aggregations

EventVo (org.ligoj.app.resource.node.EventVo)3 Test (org.junit.jupiter.api.Test)2 SubscriptionVo (org.ligoj.app.resource.subscription.SubscriptionVo)2 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 NodeVo (org.ligoj.app.api.NodeVo)1 SubscriptionStatusWithData (org.ligoj.app.api.SubscriptionStatusWithData)1 IUserRepository (org.ligoj.app.iam.IUserRepository)1 IamConfiguration (org.ligoj.app.iam.IamConfiguration)1 IamProvider (org.ligoj.app.iam.IamProvider)1 Node (org.ligoj.app.model.Node)1 Parameter (org.ligoj.app.model.Parameter)1 ParameterValue (org.ligoj.app.model.ParameterValue)1 Project (org.ligoj.app.model.Project)1 Subscription (org.ligoj.app.model.Subscription)1 AbstractOrgTest (org.ligoj.app.resource.AbstractOrgTest)1