[infusion] FLUID-4576: Test case and fix to support function name as well as function for 'success' option. (#197)

Antranig Basman antranig.basman at colorado.edu
Tue Jan 31 10:13:44 UTC 2012


Thanks for these improvements, anastasia -

i) the actual fix could still see some redundancy removed. Consider an implementation of the form beginning

fluid.each(["success", "error"], function (callbackName) { .....

ii) there are unnecessary calls to "makeCallbackFunction" in the tests as well as unnecessary expression of 
the arguments - also the fluid.tests namespace whilst used only in tests will still eventually be subject to 
congestion. Could you supply more meaningful names to "testSuccessFunction", "callbackFilenames" etc? Or 
even remove them entirely by the same consideration applied in i).

A suitable way of expressing the tests might be as follows:

..... () {
     var filenames = {
         success: "Caching-test.html",
         error: "Foofer.doodle"
         };
     var successCases = [{
         name: "No success callback",
         callback: null},{
         name: "Literal success callback",
         callback: fluid.tests.testSuccessFunction},{
         name: "Named success callback",
         callback: "fluid.tests.testSuccessFunction"]
         }];
     var errorCases = [{
         name: "No error callback",
         callback: null},{
         name: "Literal error callback",
         callback: fluid.tests.testErrorFunction},{
         name: "Named error callback",
         callback: "fluid.tests.testErrorFunction"
         }];
     fluid.each(successCases, function(scase), {
         fluid.each(errorCases, function(ecase), {
             fluid.tests.testFetchResourcesCallbacks("FLUID-4576: fetchResources callback with " +
                 scase.name + " and " + ecase.name, filenames, scase.callback, ecase.callback);
             })
         });

This would succeed in testing a lot more of the implementation surface with smaller and more readable test 
case bulk. You can see examples of this kind of "structure-driven test case" for example in our Uploader 
tests at

https://github.com/fluid-project/infusion/blob/master/src/webapp/tests/component-tests/uploader/js/UploaderTests.js#L435-572

JavaScript is a great environment for writing test cases!

Thanks,
Antranig

On 23/01/2012 12:02, Anastasia Cheetham wrote:
> @amb26, I've added support for the "error" callback and refactored the tests to remove code duplication. Please have a look, and let me know what else I can do to improve things.
>
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/fluid-project/infusion/pull/197#issuecomment-3619567




More information about the fluid-work mailing list