<?xml version="1.0"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  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.
-->

<test:suite 
    xmlns:j="jelly:core"
    xmlns:mytags="jelly:org.apache.commons.jelly.tags.bean.MyTagLibrary"
    xmlns:mytags2="jelly:org.apache.commons.jelly.tags.bean.MyBeanTagLibrary"
    xmlns="jelly:bean"
    xmlns:test="jelly:junit"
    xmlns:log="jelly:log">

    <!-- need to do this so the bean taglib recognizes the customer root tag. For nested
             tags, the object type is inferred from the available accessor methods. This definition
             is used by the testNestedBeanTag and testBeanList cases. The nesting level at
             which it appears does not play any role - it becomes globally visible after it is executed -->
             
    <beandef name="customer" className="org.apache.commons.jelly.tags.bean.Customer"/>
    <beandef name="manager" className="org.apache.commons.jelly.tags.bean.Manager" methodName="run"/>
    
    <test:case name="testNestedBeanTag">

        <customer var="c1" name="James" location="London" >
            <order amount="100" price="2.99">
                <product id="p1" name="Beer"/>
            </order>
            <order amount="200" price="4.99">
                <product id="p2" name="Pizza"/>
            </order>
        </customer>
        
        <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>
        <log:info>Customer has orders ${c1.orders}</log:info>
    
        <test:assertEquals expected="James" actual="${c1.name}"/>
        <test:assertEquals expected="London" actual="${c1.location}"/>
    
        <test:assert test="${size(c1.orders) == 2}"/>
    
        <test:assert test="${c1.orders[0].amount == 100}"/>
        <test:assert test="${c1.orders[0].price == 2.99}"/>
        
        <test:assert test="${c1.orders[1].amount == 200}"/>
        <test:assert test="${c1.orders[1].price == 4.99}"/>
    
        <test:assert test="${c1.orders[0].product != null}"/>
        <test:assert test="${c1.orders[1].product != null}"/>
        
        <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>
        <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>
    
        <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>
        <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>
    
    </test:case>
    
    <test:case name="testNestedBeanPropertyTag">
    
            <!-- 
                || This test uses a custom library which has the customer tag registered
                || Therefore, the beandef is not required 
                -->
            <mytags:customer var="c1" name="James" location="London" >
                <order amount="100" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
                <order amount="200" price="4.99">
                    <product id="p2" name="Pizza"/>
                </order>
            </mytags:customer>
    
            <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>
            <log:info>Customer has orders ${c1.orders}</log:info>
    
            <test:assertEquals expected="James" actual="${c1.name}"/>
            <test:assertEquals expected="London" actual="${c1.location}"/>
    
            <test:assert test="${size(c1.orders) == 2}"/>
    
            <test:assert test="${c1.orders[0].amount == 100}"/>
            <test:assert test="${c1.orders[0].price == 2.99}"/>
    
            <test:assert test="${c1.orders[1].amount == 200}"/>
            <test:assert test="${c1.orders[1].price == 4.99}"/>
    
            <test:assert test="${c1.orders[0].product != null}"/>
            <test:assert test="${c1.orders[1].product != null}"/>
    
            <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>
            <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>
    
            <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>
            <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>
    
    </test:case>
    
    <test:case name="testNestedBeanPropertyTag2">
    
            <!-- 
                || as above but uses a non-BeanTagLibrary library. 
                || i.e. just reusing the BeanTag and BeanPropertyTag
                -->
                
            <mytags2:customer var="c1" name="James" location="London" >
                <order amount="100" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
                <order amount="200" price="4.99">
                    <product id="p2" name="Pizza"/>
                </order>
            </mytags2:customer>
    
            <log:info>Created a customer with name: ${c1.name} and location: ${c1.location}</log:info>
            <log:info>Customer has orders ${c1.orders}</log:info>
    
            <test:assertEquals expected="James" actual="${c1.name}"/>
            <test:assertEquals expected="London" actual="${c1.location}"/>
    
            <test:assert test="${size(c1.orders) == 2}"/>
    
            <test:assert test="${c1.orders[0].amount == 100}"/>
            <test:assert test="${c1.orders[0].price == 2.99}"/>
    
            <test:assert test="${c1.orders[1].amount == 200}"/>
            <test:assert test="${c1.orders[1].price == 4.99}"/>
    
            <test:assert test="${c1.orders[0].product != null}"/>
            <test:assert test="${c1.orders[1].product != null}"/>
    
            <test:assertEquals expected="p1" actual="${c1.orders[0].product.id}"/>
            <test:assertEquals expected="Beer" actual="${c1.orders[0].product.name}"/>
    
            <test:assertEquals expected="p2" actual="${c1.orders[1].product.id}"/>
            <test:assertEquals expected="Pizza" actual="${c1.orders[1].product.name}"/>
    
    </test:case>
    
    <test:case name="testBeanList">
    
        <j:useList var="list">
            <customer name="James" location="London">
                <order amount="100" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
                <order amount="200" price="4.99">
                    <product id="p2" name="Pizza"/>
                </order>
            </customer>
            <customer name="Bob" location="Atlanta">
                <order amount="200" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
            </customer>
        </j:useList>
            
        <log:info>Created a list of customers ${list}</log:info>
    
        <test:assert test="${size(list) == 2}"/>
    
        <test:assertEquals expected="James" actual="${list[0].name}"/>
        <test:assertEquals expected="London" actual="${list[0].location}"/>
    
        <test:assert test="${size(list[0].orders) == 2}"/>
    
        <test:assert test="${list[0].orders[0].amount == 100}"/>
        <test:assert test="${list[0].orders[0].price == 2.99}"/>
        
        <test:assert test="${list[0].orders[1].amount == 200}"/>
        <test:assert test="${list[0].orders[1].price == 4.99}"/>
    
        <test:assert test="${list[0].orders[0].product != null}"/>
        <test:assert test="${list[0].orders[1].product != null}"/>
        
        <test:assertEquals expected="p1" actual="${list[0].orders[0].product.id}"/>
        <test:assertEquals expected="Beer" actual="${list[0].orders[0].product.name}"/>
    
        <test:assertEquals expected="p2" actual="${list[0].orders[1].product.id}"/>
        <test:assertEquals expected="Pizza" actual="${list[0].orders[1].product.name}"/>
        
        
        <test:assertEquals expected="Bob" actual="${list[1].name}"/>
        <test:assertEquals expected="Atlanta" actual="${list[1].location}"/>
    
    </test:case>

    <test:case name="testInvokeMethod">

        <manager var="foo">
            <customer name="James" location="London">
                <order amount="100" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
                <order amount="200" price="4.99">
                    <product id="p2" name="Pizza"/>
                </order>
            </customer>
            <customer name="Bob" location="Atlanta">
                <order amount="200" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
            </customer>
        </manager>    

        <test:assert test="${foo.isInvoked()}"/>
        <test:assert test="${size(foo.customers) == 2}"/>
        
    </test:case>

    <test:case name="testCollectionTag" xmlns="jelly:org.apache.commons.jelly.tags.bean.MyBeanTagLibrary">

        <myContainer var="list">
            <customer name="James" location="London">
                <order amount="100" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
                <order amount="200" price="4.99">
                    <product id="p2" name="Pizza"/>
                </order>
            </customer>
            <customer name="Bob" location="Atlanta">
                <order amount="200" price="2.99">
                    <product id="p1" name="Beer"/>
                </order>
            </customer>
        </myContainer>    

        <test:assert test="${size(list) == 2}"/>
        
        Created list: ${list}

        <test:assertEquals expected="James" actual="${list[0].name}"/>
        <test:assertEquals expected="London" actual="${list[0].location}"/>
        
        <test:assert test="${list[0].orders[0].amount == 100}"/>
        <test:assert test="${list[0].orders[0].price == 2.99}"/>
        
        <test:assert test="${list[0].orders[1].amount == 200}"/>
        <test:assert test="${list[0].orders[1].price == 4.99}"/>
    
        <test:assert test="${list[0].orders[0].product != null}"/>
        <test:assert test="${list[0].orders[1].product != null}"/>
        
        <test:assertEquals expected="p1" actual="${list[0].orders[0].product.id}"/>
        <test:assertEquals expected="Beer" actual="${list[0].orders[0].product.name}"/>
    
        <test:assertEquals expected="p2" actual="${list[0].orders[1].product.id}"/>
        <test:assertEquals expected="Pizza" actual="${list[0].orders[1].product.name}"/>
        
        
        <test:assertEquals expected="Bob" actual="${list[1].name}"/>
        <test:assertEquals expected="Atlanta" actual="${list[1].location}"/>
    </test:case>
    
</test:suite>
