aboutsummaryrefslogtreecommitdiffstats
path: root/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/flow/AddNodeToCompositionFlow.java
blob: 07d54299a5a3f5cad5fcfa08f36f40ed8cc87880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package org.onap.sdc.frontend.ci.tests.flow;

import com.aventstack.extentreports.Status;
import java.util.Objects;
import java.util.Optional;
import org.onap.sdc.frontend.ci.tests.datatypes.ComponentData;
import org.onap.sdc.frontend.ci.tests.pages.ComponentPage;
import org.onap.sdc.frontend.ci.tests.pages.PageObject;
import org.onap.sdc.frontend.ci.tests.pages.component.workspace.CompositionPage;
import org.openecomp.sdc.be.model.ComponentInstance;
import org.openqa.selenium.WebDriver;

public class AddNodeToCompositionFlow extends AbstractUiTestFlow {

    private final ComponentData parentComponent;
    private final ComponentData componentToAdd;
    private CompositionPage compositionPage;
    private ComponentInstance createdComponentInstance;

    public AddNodeToCompositionFlow(final WebDriver webDriver, final ComponentData parentComponent, final ComponentData componentToAdd) {
        super(webDriver);
        this.parentComponent = parentComponent;
        this.componentToAdd = componentToAdd;
    }

    @Override
    public Optional<? extends PageObject> run(final PageObject... pageObjects) {
        Objects.requireNonNull(parentComponent);
        Objects.requireNonNull(parentComponent.getComponentType());
        Objects.requireNonNull(componentToAdd);
        extendTest.log(Status.INFO, String.format("Adding Resource '%s' to VF/Service '%s'", componentToAdd.getName(), parentComponent.getName()));

        compositionPage = findParameter(pageObjects, CompositionPage.class);
        compositionPage.isLoaded();
        addNodeToComposition();
        final ComponentPage componentPage = compositionPage.goToGeneral();
        componentPage.isLoaded();
        compositionPage = componentPage.goToComposition();
        return Optional.of(this.compositionPage);
    }

    private void addNodeToComposition() {
        switch (parentComponent.getComponentType()) {
            case SERVICE:
                createdComponentInstance = compositionPage
                    .addNodeToServiceCompositionUsingApi(parentComponent.getName(), parentComponent.getVersion(), componentToAdd.getName(),
                        componentToAdd.getVersion());
                break;
            case RESOURCE:
                createdComponentInstance = compositionPage
                    .addNodeToResourceCompositionUsingApi(parentComponent.getName(), parentComponent.getVersion(), componentToAdd.getName(),
                        componentToAdd.getVersion());
                break;
            default:
                throw new UnsupportedOperationException(
                    String.format("Add node in a %s not yet supported", parentComponent.getComponentType().getValue()));
        }
    }

    @Override
    public Optional<CompositionPage> getLandedPage() {
        return Optional.ofNullable(compositionPage);
    }

    public Optional<ComponentInstance> getCreatedComponentInstance() {
        return Optional.ofNullable(createdComponentInstance);
    }
}