Skip to content

Commit

Permalink
Added a struct dataprovider
Browse files Browse the repository at this point in the history
  • Loading branch information
marcesher committed Sep 8, 2011
1 parent 0973fb7 commit 4a8eddd
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 18 deletions.
24 changes: 9 additions & 15 deletions framework/decorators/DataProviderDecorator.cfc
Expand Up @@ -18,15 +18,15 @@ for each member of the data provider
<cfset var dpName = getAnnotation(methodName, "dataprovider")/>
<cfset var outputOfTest = "">
<cfif len(dpName)>
<cflog text="inside dataproviderdecorator.... running dataprovider named #dpName#">
<!---<cflog text="inside dataproviderdecorator.... running dataprovider named #dpName#">--->

<cfset variables.context = getVariablesScope() />

<cfsavecontent variable="outputOfTest">
<cfset runDataProvider(methodName, dpName)>
</cfsavecontent>

<cfreturn outputOfTest>
<!---<cfreturn getTarget().invokeTestMethod(argumentCollection=arguments)/>--->
<cfelse>
<cfreturn getTarget().invokeTestMethod(argumentCollection=arguments)/>
</cfif>
Expand All @@ -53,6 +53,8 @@ for each member of the data provider
<cfset runQueryDataProvider(methodName, dataProvider)>
<cfelseif isArray(provider)>
<cfset runArrayDataProvider(methodName, dataProvider)>
<cfelseif isStruct(provider)>
<cfset runStructDataProvider(methodName, dataProvider)>
<cfelseif isNumeric(provider) or isNumeric(dataProvider)>
<cfset runNumericDataProvider(methodName, dataProvider)>
<cfelseif fileExists(provider)>
Expand Down Expand Up @@ -85,8 +87,6 @@ for each member of the data provider
var temp = structNew();
</cfscript>

<cfthrow type="NotImplementedException" message="Need a good usecase for this">

<cfif not arrayLen(getMetaData(method).parameters)>
<cfthrow type="mxunit.exception.MissingDataProviderArgumentException"
message="You must specify a <cfargument...> when using the dataprovider annotation in your test."
Expand All @@ -96,20 +96,14 @@ for each member of the data provider
<cfscript>
structName = getMetaData(method).parameters[1].name;
structObject = context[dataProvider];
args[structName] = structObject;
//args[structName] = structObject;
</cfscript>

<cfdump var="#structObject#">
<cfloop collection="#structObject#" item="item">
<!--- <cfset temp = structNew() />
<cfset temp[item] = structObject[item] >
<cfdump var="#temp#">
<cfset args = temp>
<cfdump var="#structObject[item]#">
<cfinvoke component="#arguments.objectUnderTest#"
method="#arguments.methodName#"
argumentcollection="#args#" />
--->
<cfset temp = structNew() />
<cfset temp[item] = structObject[item]>
<cfset args[structName] = temp>
<cfset _$invoke(methodName, args)>
</cfloop>
</cffunction>

Expand Down
9 changes: 6 additions & 3 deletions tests/framework/DataProviderTest.cfc
Expand Up @@ -3,13 +3,16 @@



<!--- <cfset myStruct = {
<cfset myStruct = {
foo='bar',bar='123',bunko='banked'
}>
<cffunction name="dataproviderShouldAcceptStructs" mxunit:dataprovider="myStruct">
<cfargument name="theData">
<cfset debug(theData.foo) >
</cffunction> --->
<cfset debug(theData) >

<cfset assertEquals( 1, structCount(theData), "This is a struct with 3 keys, so each iteration should contains a single key" )>

</cffunction>


<!--- Just run this test 100 times --->
Expand Down

0 comments on commit 4a8eddd

Please sign in to comment.