Package org.auraframework.impl.root

Source Code of org.auraframework.impl.root.DependencyDefImplTest

/*
* Copyright (C) 2013 salesforce.com, inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.auraframework.impl.root;

import java.util.HashSet;
import java.util.Set;

import org.auraframework.def.DefDescriptor;
import org.auraframework.def.DependencyDef;
import org.auraframework.impl.AuraImplTestCase;
import org.auraframework.throwable.quickfix.InvalidDefinitionException;

public class DependencyDefImplTest extends AuraImplTestCase {
    public DependencyDefImplTest(String name) {
        super(name);
    }

    public void testDependencyDefAndValidate() throws Exception {
        DependencyDef testDependencyDef = null;

        // Invalid, no parent.
        try {
            testDependencyDef = vendor.makeDependencyDef(null, "aura", null, vendor.makeLocation("f1", 5, 5, 0));
            testDependencyDef.validateDefinition();
            fail("Should have thrown QuickFixException for null parent in DependencyDef's");
        } catch (Exception e) {
            checkExceptionFull(e, InvalidDefinitionException.class, "No parent in DependencyDef", "f1");
        }

        // Invalid no resource.
        try {
            testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"), null, "COMPONENT",
                    vendor.makeLocation("f1", 5, 5, 0));
            testDependencyDef.validateDefinition();
            fail("Should have thrown QuickFixException for null resource in DependencyDef's");
        } catch (Exception e) {
            checkExceptionFull(e, InvalidDefinitionException.class, "Missing required resource", "f1");
        }

        // Invalid type
        try {
            testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"), "aura", "WhatAmI",
                    vendor.makeLocation("f1", 5, 5, 0));
            testDependencyDef.validateDefinition();
            fail("Should have thrown QuickFixException for invalid type in DependencyDef's");
        } catch (Exception e) {
            checkExceptionRegex(e, InvalidDefinitionException.class,
                    "No enum const(ant)? (class )?org\\.auraframework\\.def\\.DefDescriptor.DefType\\.WhatAmI", "f1");
        }

        // Valid, with a namespace.
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"), "aura", null,
                vendor.makeLocation("f1", 5, 5, 0));
        testDependencyDef.validateDefinition();

        // Valid, with a namespace & type.
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"), "aura", "COMPONENT",
                vendor.makeLocation("f1", 5, 5, 0));
        testDependencyDef.validateDefinition();
    }

    /**
     * Verify that dependencies of different types can be found within a given namespace or that the correct Exception
     * is thrown.
     *
     * Since this test looks in a namespace that can be changed over time, the specific names of dependencies may need
     * to be changed as the source code changes.
     */
    public void testAppendDependencies() throws Exception {
        DependencyDef testDependencyDef;
        Set<DefDescriptor<?>> deps = new HashSet<>();

        // Check for a couple dependencies present in a namespace
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"), "aura", "INTERFACE",
                vendor.makeLocation("f1", 5, 5, 0));
        testDependencyDef.appendDependencies(deps);
        assertTrue("Dependency not found", containsDependency(deps, "markup://aura:rootComponent"));

        // Check dependency that exists but is wrong type
        // TODO(W-1497192): can't find providers or helpers as dependencies
        // testDependencyDef =
        // vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"),
        // "aura", "PROVIDER", vendor.makeLocation("f1", 5, 5, 0));
        // deps.clear();
        // testDependencyDef.appendDependencies(deps);

        // Get dependency of specific component
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"),
                "markup://aura:application", "APPLICATION", vendor.makeLocation("f1", 5, 5, 0));
        deps.clear();
        testDependencyDef.appendDependencies(deps);
        assertTrue("Failed to find dependency when searching using format <type>://<namespace>:<name>",
                containsDependency(deps, "markup://aura:application"));

        // Try to get dependency that doesn't exist, verify exception thrown
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"),
                "markup://aura:iDontExist", "APPLICATION", vendor.makeLocation("f1", 5, 5, 0));
        deps.clear();
        testDependencyDef.appendDependencies(deps);
        try {
            testDependencyDef.validateReferences();
            fail("Exception not thrown when looking for dependency that does not exist");
        } catch (Exception e) {
            checkExceptionFull(e, InvalidDefinitionException.class,
                    "Invalid dependency markup://aura:iDontExist[APPLICATION]", "f1");
        }

        // Valid resource name but wrong type
        testDependencyDef = vendor.makeDependencyDef(vendor.makeComponentDefDescriptor("hi"),
                "markup://aura:application", "COMPONENT", vendor.makeLocation("f1", 5, 5, 0));
        deps.clear();
        testDependencyDef.appendDependencies(deps);
        try {
            testDependencyDef.validateReferences();
            fail("Exception not thrown when dependency resource is valid but is of wrong type");
        } catch (Exception e) {
            checkExceptionFull(e, InvalidDefinitionException.class,
                    "Invalid dependency markup://aura:application[COMPONENT]", "f1");
        }
    }

    private boolean containsDependency(Set<DefDescriptor<?>> depSet, String depName) {
        for (DefDescriptor<?> dependency : depSet) {
            if (dependency.getQualifiedName().equals(depName)) {
                return true;
            }
        }
        return false;
    }
}
TOP

Related Classes of org.auraframework.impl.root.DependencyDefImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.