blob: 1a74c4224c7e0f171df7cb1657f8c42eb2fea1ad [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.sling.ide.test.impl.sightly;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import org.apache.sling.ide.eclipse.sightly.internal.SightlyNatureTester;
import org.apache.sling.ide.eclipse.ui.nav.JcrContentContentProvider;
import org.apache.sling.ide.eclipse.ui.nav.model.JcrNode;
import org.apache.sling.ide.eclipse.ui.nav.model.SyncDir;
import org.apache.sling.ide.test.impl.helpers.ProjectAdapter;
import org.apache.sling.ide.test.impl.helpers.TemporaryProject;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
public class SightlyNatureTesterTest {
@Rule
public TemporaryProject projectRule = new TemporaryProject();
private SightlyNatureTester tester;
private ProjectAdapter projectAdapter;
@Before
public void prepare() throws Exception {
final IProject project = projectRule.getProject();
projectAdapter = new ProjectAdapter(project);
projectAdapter.addNatures("org.eclipse.wst.common.project.facet.core.nature");
projectAdapter.installFacet("sling.content", "1.0");
tester = new SightlyNatureTester();
}
@Test
public void testOnSightlyProject() throws Exception {
testOnProject(true);
}
private void testOnProject(boolean hasSightlyNature) throws CoreException {
if (hasSightlyNature) {
projectAdapter.installFacet("sightly", "1.1");
}
final IPath sightlyTemplatePath = Path.fromPortableString("/jcr_root/libs/my/component/html.html");
projectAdapter.createOrUpdateFile(sightlyTemplatePath, new ByteArrayInputStream(("<html />").getBytes()));
// test on resources directly
assertEquals("Test on project", hasSightlyNature,
tester.test(projectRule.getProject(), "sightlyNature", new Object[0], null));
assertEquals("Test on folder", hasSightlyNature,
tester.test(projectRule.getProject().getFolder("jcr_root"), "sightlyNature", new Object[0], null));
assertEquals("Test on file", hasSightlyNature, tester
.test(projectRule.getProject().getFile(sightlyTemplatePath), "sightlyNature", new Object[0], null));
// directly create the root node
SyncDir syncDirNode = new SyncDir((IFolder) projectRule.getProject().findMember("jcr_root"));
assertEquals("Test on sync dir node", hasSightlyNature,
tester.test(syncDirNode, "sightlyNature", new Object[0], null));
// test on jcr nodes
JcrContentContentProvider contentProvider = new JcrContentContentProvider();
JcrNode firstChild = (JcrNode) contentProvider.getChildren(syncDirNode)[0];
assertEquals("Test on jcr node", hasSightlyNature,
tester.test(firstChild, "sightlyNature", new Object[0], null));
}
@Test
public void testOnNonSightlyProject() throws Exception {
testOnProject(false);
}
}