// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/configuration/TestConstants.java
// public class TestConstants {
// 
//     private TestConstants() {
//     }
// 
//     public static final String OTHER_RESOURCE_BUNDLE_NAME = "bl.other";
//     public static final String BEAN_TEST_RETURN_VALUE = "getTextResult";
//     public static final String PROVIDED_RESOLVER_SUFFIX = "provided";
//     public static final String EXTERNAL_CLASSES_DIRECTORY = "target/external";
//     public static final String TEST_TARGET_CLASSES_DIRECTORY = "target/test-classes";
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/it/common/AbstractWarDefaultPropertyMethod.java
// public abstract class AbstractWarDefaultPropertyMethod {
// 
//     protected static WebArchive createArchive() throws IOException {
// 
//         WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "cdipropertiestest.war").addClasses(TestBean.class,
//                 InjectedBean.class);
//         DeploymentAppenderFactory
//                 .create(webArchive)
//                 .appendWebXml("../cdi-properties-test-common/src/test/resources/assets/warCommon/WEB-INF/web.xml")
//                 .appendWebResource(
//                         "../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/cditest.xhtml",
//                         "../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/cditestpt.xhtml")
//                 .appendFacesConfig()
//                 .appendBeansXml().appendCDIPropertiesLib().appendLogging().appendProperties().appendOtherProperties();
//         return webArchive;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/utils/MessageBundleUtils.java
// public class MessageBundleUtils {
// 
//     private MessageBundleUtils() {
//     }
// 
//     public static String resolveProperty(String key, String bundleName, Locale locale, Object... args) {
//         String value = ResourceBundle.getBundle(bundleName, locale).getString(key);
//         if (args != null && args.length > 0) {
//             value = MessageFormat.format(value, args);
//         }
//         return value;
//     }
// 
// }


import com.byteslounge.cdi.test.it.common.AbstractWarDefaultPropertyMethod;
import com.byteslounge.cdi.test.utils.MessageBundleUtils;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import com.byteslounge.cdi.test.configuration.TestConstants;
/*
 * Copyright 2014 byteslounge.com (Gonçalo Marques).
 *
 * 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 com.byteslounge.cdi.test.it;




/**
 * Integration Test
 * 
 * @author Gonçalo Marques
 * @since 1.0.0
 */
@RunWith(Arquillian.class)
public class WarDefaultPropertyMethodIT extends AbstractWarDefaultPropertyMethod {

    @Drone
    private WebDriver browser;

    @FindBy(id = "hello")
    private WebElement hello;

    @FindBy(id = "system")
    private WebElement system;

    @FindBy(id = "other")
    private WebElement other;

    @FindBy(id = "otherabc")
    private WebElement otherAbc;

    @Deployment
    public static WebArchive createArchive() throws IOException {
        WebArchive webArchive = CommonWarDefaultPropertyMethod.createArchive();
        return webArchive;

    }

    @Test
    @RunAsClient
    public void test(@ArquillianResource URL contextPath) {
        browser.get(contextPath + "cditest.xhtml");
        Assert.assertEquals(hello.getText(), MessageBundleUtils.resolveProperty("hello.world", "bl.messages", Locale.getDefault()));
        Assert.assertEquals(system.getText(), MessageBundleUtils.resolveProperty("system.linux.box", "bl.messages", Locale.getDefault(), "Linux", "16"));
        Assert.assertEquals(other.getText(), MessageBundleUtils.resolveProperty("other.message", TestConstants.OTHER_RESOURCE_BUNDLE_NAME, Locale.getDefault()));
        Assert.assertEquals(otherAbc.getText(),
                MessageBundleUtils.resolveProperty("other.parameter", TestConstants.OTHER_RESOURCE_BUNDLE_NAME, Locale.getDefault(), "B"));

        browser.get(contextPath + "cditestpt.xhtml");
        Assert.assertEquals(hello.getText(), MessageBundleUtils.resolveProperty("hello.world", "bl.messages", new Locale("pt")));
        Assert.assertEquals(system.getText(), MessageBundleUtils.resolveProperty("system.linux.box", "bl.messages", new Locale("pt"), "Linux", "16"));
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/configuration/TestConstants.java
// public class TestConstants {
// 
//     private TestConstants() {
//     }
// 
//     public static final String OTHER_RESOURCE_BUNDLE_NAME = "bl.other";
//     public static final String BEAN_TEST_RETURN_VALUE = "getTextResult";
//     public static final String PROVIDED_RESOLVER_SUFFIX = "provided";
//     public static final String EXTERNAL_CLASSES_DIRECTORY = "target/external";
//     public static final String TEST_TARGET_CLASSES_DIRECTORY = "target/test-classes";
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/it/common/AbstractWarDefaultPropertyMethod.java
// public abstract class AbstractWarDefaultPropertyMethod {
// 
//     protected static WebArchive createArchive() throws IOException {
// 
//         WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "cdipropertiestest.war").addClasses(TestBean.class,
//                 InjectedBean.class);
//         DeploymentAppenderFactory
//                 .create(webArchive)
//                 .appendWebXml("../cdi-properties-test-common/src/test/resources/assets/warCommon/WEB-INF/web.xml")
//                 .appendWebResource(
//                         "../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/cditest.xhtml",
//                         "../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/cditestpt.xhtml")
//                 .appendFacesConfig()
//                 .appendBeansXml().appendCDIPropertiesLib().appendLogging().appendProperties().appendOtherProperties();
//         return webArchive;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/utils/MessageBundleUtils.java
// public class MessageBundleUtils {
// 
//     private MessageBundleUtils() {
//     }
// 
//     public static String resolveProperty(String key, String bundleName, Locale locale, Object... args) {
//         String value = ResourceBundle.getBundle(bundleName, locale).getString(key);
//         if (args != null && args.length > 0) {
//             value = MessageFormat.format(value, args);
//         }
//         return value;
//     }
// 
// }


// Path: cdi-properties-test/cdi-properties-test-wildfly82/src/test/java/com/byteslounge/cdi/test/it/WarDefaultPropertyMethodIT.java
import com.byteslounge.cdi.test.it.common.AbstractWarDefaultPropertyMethod;
import com.byteslounge.cdi.test.utils.MessageBundleUtils;
import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import com.byteslounge.cdi.test.configuration.TestConstants;

/*
 * Copyright 2014 byteslounge.com (Gonçalo Marques).
 *
 * 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 com.byteslounge.cdi.test.it;




/**
 * Integration Test
 * 
 * @author Gonçalo Marques
 * @since 1.0.0
 */
@RunWith(Arquillian.class)
public class WarDefaultPropertyMethodIT extends AbstractWarDefaultPropertyMethod {

    @Drone
    private WebDriver browser;

    @FindBy(id = "hello")
    private WebElement hello;

    @FindBy(id = "system")
    private WebElement system;

    @FindBy(id = "other")
    private WebElement other;

    @FindBy(id = "otherabc")
    private WebElement otherAbc;

    @Deployment
    public static WebArchive createArchive() throws IOException {
        WebArchive webArchive = CommonWarDefaultPropertyMethod.createArchive();
        return webArchive;

    }

    @Test
    @RunAsClient
    public void test(@ArquillianResource URL contextPath) {
        browser.get(contextPath + "cditest.xhtml");
        Assert.assertEquals(hello.getText(), MessageBundleUtils.resolveProperty("hello.world", "bl.messages", Locale.getDefault()));
        Assert.assertEquals(system.getText(), MessageBundleUtils.resolveProperty("system.linux.box", "bl.messages", Locale.getDefault(), "Linux", "16"));
        Assert.assertEquals(other.getText(), MessageBundleUtils.resolveProperty("other.message", TestConstants.OTHER_RESOURCE_BUNDLE_NAME, Locale.getDefault()));
        Assert.assertEquals(otherAbc.getText(),
                MessageBundleUtils.resolveProperty("other.parameter", TestConstants.OTHER_RESOURCE_BUNDLE_NAME, Locale.getDefault(), "B"));

        browser.get(contextPath + "cditestpt.xhtml");
        Assert.assertEquals(hello.getText(), MessageBundleUtils.resolveProperty("hello.world", "bl.messages", new Locale("pt")));
        Assert.assertEquals(system.getText(), MessageBundleUtils.resolveProperty("system.linux.box", "bl.messages", new Locale("pt"), "Linux", "16"));
        Assert.assertEquals(other.getText(), MessageBundleUtils.resolveProperty("other.message", TestConstants.OTHER_RESOURCE_BUNDLE_NAME, new Locale("pt")));