Changeset 1863 for trunk


Ignore:
Timestamp:
2011-02-22 15:00:38 (15 months ago)
Author:
mpo
Message:

fixes #446
By making sure we call to updateValidationClasses for all containers.
And by making the logic of that method not hook back into the isValid() method itself: but purely check on value-states
Patch includes an in depth test for case, composite and form

Location:
trunk/modules/kauri-forms/kauri-forms-framework/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/static-{build}.key/kauri.forms/case.js

    r1807 r1863  
    263263    }; 
    264264    CaseControl.reset = function(me) { 
    265         me.valueState = me.STATE_INIT; 
    266265        // reset children: first elements in me._valueControls, then me.caseControl 
    267266        for (i in me._valueControls) { 
     
    288287          }; 
    289288        } 
     289 
     290        me.valueState = me.STATE_INIT; 
     291        me.updateValidationClasses(); 
    290292    } 
    291293     
  • trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/static-{build}.key/kauri.forms/control.js

    r1858 r1863  
    14501450 
    14511451    Control.reset = function(me) { 
    1452         if( ! (me.value === me.initial.value && me.valueState == Control.STATE_INIT))         
     1452        if( ! (me.value === me.initial.value && me.valueState == Control.STATE_INIT)) {         
    14531453            me.setWireValue(me.initial.value, true); 
     1454        } 
    14541455        me.valueState = Control.STATE_INIT; 
     1456        me.updateValidationClasses(); 
    14551457         
    14561458        if (me.isEnabled()) { 
     
    18171819           
    18181820          if(mrkElm){ 
    1819               if (this.valueState == Control.STATE_INIT) { 
    1820                   mrkElm.removeClass("invalid").removeClass("valid"); 
    1821               } else if (this.isValid()) { 
     1821              if (this.valueState == Control.STATE_INVALID) { 
     1822                  mrkElm.removeClass("valid").addClass("invalid"); 
     1823              } else if (this.valueState == Control.STATE_VALID) { 
    18221824                  mrkElm.removeClass("invalid").addClass("valid"); 
    18231825              } else { 
    1824                   mrkElm.removeClass("valid").addClass("invalid"); 
     1826                  mrkElm.removeClass("invalid").removeClass("valid"); 
    18251827              } 
    18261828          } 
     
    22942296    }; 
    22952297    AbstractContainerControl.reset = function(me){ 
    2296         me.valueState = Control.STATE_INIT; 
    22972298        if (me.initial.value == undefined) { 
    22982299            me.eachChild(AbstractContainerControl.childReset); 
     2300            me.valueState = Control.STATE_INIT; 
     2301            me.updateValidationClasses(); 
    22992302        } else { 
    23002303            Control.reset(me); 
  • trunk/modules/kauri-forms/kauri-forms-framework/src/test/kauri.forms/test-form.js

    r1858 r1863  
    726726        
    727727}); 
     728 
     729test("inital valid-state of various container controls", function() { 
     730 
     731    // create 
     732    var $main = $('#main').show(); 
     733 
     734    var id = "f7"; 
     735 
     736    var allWellValidator = makeMockValidator(function() {return true;})[0]; 
     737     
     738    var $form = $('<form id="' + id + '" ></form>').appendTo($main); 
     739    var fconf = { 
     740 
     741        members : { 
     742            'simple': 'string', 
     743            'compos' : { 
     744                base : 'composite',  
     745                members  : { 
     746                    'simple': 'string',  
     747                    'another': 'string' 
     748                }, 
     749                validators: [allWellValidator] 
     750            }, 
     751            'casus': { 
     752                base: 'case', 
     753                cases: { 
     754                    'simple': 'string', 
     755                    'another': 'string' 
     756                } 
     757            } 
     758        } 
     759    }; 
     760 
     761    var form = new $.org.kauriproject.forms.Form($form, fconf); 
     762    var casus = form.findControl('casus'); 
     763    var $casus = casus.getElement(); 
     764    var compos = form.findControl('compos'); 
     765    var $compos = compos.getElement(); 
     766     
     767    var assertValidState = function (when, valid) { // includes 18 assertions 
     768        var classValidDescr = "valid"; 
     769        if (valid == undefined) { 
     770            valid = false; // neutral tests yield no valid mark 
     771            classValidDescr = "neutral" 
     772        } 
     773         
     774        equals($casus.hasClass('valid'), valid, "casus should be " + classValidDescr + ".("+when+")"); 
     775        equals($casus.hasClass('invalid'), false, "including no invalid markers.("+when+")"); 
     776        equals(casus.isValid(false), valid, "casus has never been validated, it should be " + classValidDescr + ".("+when+")"); 
     777        equals(casus.isValid(true), true, "but it should be actually valid when checking it.("+when+")"); 
     778        equals($casus.hasClass('valid'), true, "and after checking should be marked as such.("+when+")"); 
     779        equals($casus.hasClass('invalid'), false, "not even invalid ones.("+when+")"); 
     780 
     781        equals($compos.hasClass('valid'), valid, "compos should be " + classValidDescr + ".("+when+")"); 
     782        equals($compos.hasClass('invalid'), false, "and not invalid.("+when+")"); 
     783        equals(compos.isValid(false), valid, "compos has never been validated, it should be " + classValidDescr + ".("+when+")"); 
     784        equals(compos.isValid(true), true, "but it should be actually valid when checking it.("+when+")"); 
     785        equals($compos.hasClass('valid'), true, "and after checking should be marked as such because it has an own validator.("+when+")"); 
     786        equals($compos.hasClass('invalid'), false, "and thus not have an invalid mark.("+when+")"); 
     787 
     788        equals($form.hasClass('valid'), valid, "form should be " + classValidDescr + ".("+when+")"); 
     789        equals($form.hasClass('invalid'), false, "including no invalid markers.("+when+")"); 
     790        equals(form.isValid(false), valid, "form has never been validated, it should be " + classValidDescr + ".("+when+")"); 
     791        equals(form.isValid(true), true, "but it turns out to be valid if we really check it.("+when+" and forced validation)"); 
     792        equals($form.hasClass('valid'), true, "and should also carry the mark. ("+when+" and forced validation)"); 
     793        equals($form.hasClass('invalid'), false, "including no invalid markers.("+when+" and forced validation)"); 
     794    } 
     795     
     796 
     797    expect(1 + 3*18); 
     798     
     799    isSet(form.getElement(), $form,  "the form is the form of course"); 
     800    assertValidState("after creation"); // validstate of css is unmarked 
     801 
     802    form.setValue(); 
     803    assertValidState("after value set", true); //validstate of css marked TRUE 
     804     
     805    form.reset(); 
     806    assertValidState("after reset"); //validstate of css is unmarked 
     807     
     808     
     809    // cleanup 
     810    $main.html("").hide(); 
     811}); 
Note: See TracChangeset for help on using the changeset viewer.