Generating JavaScript in C# and subsequent testing

Posted by Codebrain on Stack Overflow See other posts from Stack Overflow or by Codebrain
Published on 2010-04-13T10:44:15Z Indexed on 2010/04/13 12:23 UTC
Read the original article Hit count: 338

We are currently developing an ASP.NET MVC application which makes heavy use of attribute-based metadata to drive the generation of JavaScript.

Below is a sample of the type of methods we are writing:

function string GetJavascript<T>(string javascriptPresentationFunctionName,
                                 string inputId,
                                 T model)
{
    return @"function updateFormInputs(value){
        $('#" + inputId + @"_SelectedItemState').val(value);
        $('#" + inputId + @"_Presentation').val(value);
     }

    function clearInputs(){
        " + helper.ClearHiddenInputs<T>(model) + @"
        updateFormInputs('');
    }

    function handleJson(json){
        clearInputs();
        " + helper.UpdateHiddenInputsWithJson<T>("json", model) + @"
        updateFormInputs(" + javascriptPresentationFunctionName + @"());
        " + model.GetCallBackFunctionForJavascript("json") + @"
    }";
}

This method generates some boilerplace and hands off to various other methods which return strings. The whole lot is then returned as a string and written to the output.

The question(s) I have are:

1) Is there a nicer way to do this other than using large string blocks?

We've considered using a StringBuilder or the Response Stream but it seems quite 'noisy'. Using string.format starts to become difficult to comprehend.

2) How would you go about unit testing this code? It seems a little amateur just doing a string comparison looking for particular output in the string.

3) What about actually testing the eventual JavaScript output?

Thanks for your input!

© Stack Overflow or respective owner

Related posts about c#

Related posts about JavaScript