<!--
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.
-->
<test-suite suite-name="scrumtests"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd">

        <test-case case-name="scrum-tests">
            <simple-method-test location="component://scrum/minilang/test/ScrumTests.xml"/>
        </test-case>
        <test-case case-name="productBacklog-tests">
             <simple-method-test location="component://scrum/minilang/test/ProductBacklogTest.xml"/>
        </test-case>
        <test-case case-name="scrumProject-tests">
             <simple-method-test location="component://scrum/minilang/test/ScrumProjectTests.xml"/>
        </test-case>
        <test-case case-name="sprint-tests">
             <simple-method-test location="component://scrum/minilang/test/SprintTests.xml"/>
        </test-case>
        <test-case case-name="sprintBacklog-tests">
             <simple-method-test location="component://scrum/minilang/test/SprintBacklogTests.xml"/>
        </test-case>
        <test-case case-name="dailyMeetingMinute-tests">
             <simple-method-test location="component://scrum/minilang/test/DailyMeetingMinuteTests.xml"/>
        </test-case>
        <test-case case-name="product-tests">
             <simple-method-test location="component://scrum/minilang/test/ProductTest.xml"/>
        </test-case>
        <!--<test-case case-name="task-test">
            <simple-method-test location="component://scrum/minilang/test/TaskTests.xml"/>
        </test-case>-->
        <test-case case-name="myWork-test">
            <simple-method-test location="component://scrum/minilang/test/MyWorkTests.xml"/>
        </test-case>
        <test-case case-name="timesheet-test">
            <simple-method-test location="component://scrum/minilang/test/TimesheetTests.xml"/>
        </test-case>
        <!-- test-case case-name="qa-tests">
             <simple-method-test location="component://scrum/minilang/test/QATests.xml"/>
        </test-case-->
        
        <!-- Tests data load -->
        <test-case case-name="scrum-type-data">
            <entity-xml action="load" entity-xml-url="component://scrum/data/scrumTypeData.xml"/>
        </test-case>
        <test-case case-name="scrum-security-data">
            <entity-xml action="load" entity-xml-url="component://scrum/data/scrumSecurityGroupDemoData.xml"/>
        </test-case>
        <test-case case-name="scrum-demo-data">
            <entity-xml action="load" entity-xml-url="component://scrum/data/scrumDemoData.xml"/>
        </test-case>
</test-suite>
