blob: 9e47a35bf0b752171dee89f67c5c6c00bce23dcf [file] [log] [blame]
/**
* Created by Hellix on 2015-02-22.
*/
package UnitTest.ExtendedClasses
{
import UnitTest.Fixtures.TestCaseVo;
import UnitTest.Fixtures.TestConfig;
import mx.rpc.AsyncToken;
import mx.rpc.IResponder;
import mx.rpc.http.HTTPService;
import mx.utils.LoaderUtil;
import org.flexunit.runner.external.ExternalDependencyToken;
import org.flexunit.runner.external.IExternalDependencyLoader;
public class TestConfigurationLoader implements IExternalDependencyLoader, IResponder
{
private var httpService:HTTPService;
private var token:ExternalDependencyToken;
private var testName:String;
public function TestConfigurationLoader(fileName:String, testName:String)
{
if (!TestConfig.getInstance().testConfigData)
{
httpService = new HTTPService();
httpService.url = LoaderUtil.createAbsoluteURL(TestConfig.getInstance().normalizedUrl, fileName);
httpService.resultFormat = "e4x";
}
this.token = new ExternalDependencyToken();
this.testName = testName;
}
public function retrieveDependency(testClass:Class):ExternalDependencyToken
{
var asyncToken:AsyncToken = httpService ? httpService.send() : new AsyncToken();
asyncToken.addResponder(this);
return token;
}
public function result(data:Object):void
{
var dp:Array = null;
if (httpService && data.result)
{
TestConfig.getInstance().testConfigData = data.result;
dp = parseTestConfigData(data.result);
}
else
{
dp = parseTestConfigData(TestConfig.getInstance().testConfigData);
}
token.notifyResult(dp);
}
public function fault(info:Object):void
{
token.notifyFault("Unable to load data tests");
}
private function parseTestConfigData(xmlData:XML):Array
{
var testConfigData:Array = [];
var testCases:XMLList = xmlData.TestCase.(@functionName == testName);
for each (var testCase:XML in testCases)
{
var testsData:XMLList = testCase.TestData;
var testCaseVo:TestCaseVo = new TestCaseVo(testCase.@functionName);
for each (var testData:XML in testsData)
{
testCaseVo[testData.@name] = testData.toString();
}
testConfigData.push([testCaseVo]);
}
return testConfigData;
}
}
}