#128 open
TJ Holowaychuk

Fixed shared behaviors

Reported by TJ Holowaychuk | July 3rd, 2009 @ 03:17 PM | in 3.0

Apparently are not working properly and/or not documented properly


describe '.loc-link'
   before
     window.XMLHttpRequest = JSpec.XHR;
     runLivequeries = function() {
       if ($.livequery) {
         queries = $.livequery.queries;
         for (var i = 0; i < queries.length; i++) {
           queries[i].run();
         }
       }
     };

     $.ajaxSettings.async = false;
     $.fx.off = true;
     $.fn.fireEvent = function(event, obj) {
       return this.each(function() {
         runLivequeries();
         var basic = {type: event, target: this, preventDefault: true};
         $.extend(basic, obj || {});
         $(this).trigger(event, [basic]);
       });
     };
   end

   before_each
     $('#dom').empty();
   end

   before
     tested = 'loc-link'
     dom = $('#dom');
   end

   before_each
     button = $("<div class='"+tested+"'
href='http://wut.com'>hi</div>");
     mainpane = $("<div id='main-pane'></div>");
     ajaxLoader = $("<div class='ajax-loader' style='visibility:
hidden;'></div>");

     mainpane.append(ajaxLoader);
     dom
       .append(button);
       .append(mainpane);
   end

   describe '#click'
     before_each
       ajaxLoader.css('visibility', 'hidden');
       success = 'foobar!'
     end

     it "shows the ajax loader"
       JSpec.XHR.returns(success);
       jQuery(ajaxLoader).css('visibility').should.be 'hidden'
       button.click();
       jQuery(ajaxLoader).css('visibility').should.be 'visible'
     end

     it "makes an ajax request to the element's href attr"
       button.click();
       JSpec.XHR.url.should.equal button.attr('href')
     end

     describe "success"
       before_each
         JSpec.XHR.returns(success);
         updateChar_called = false
         old_updateChar = Relife.updateChar
         Relife.updateChar = function() {
           updateChar_called = true;
         };
       end

       after_each
         Relife.updateChar = old_updateChar
       end

       it "replaces the #main-pane with the results of the request"
         button.click();
         mainpane.text().should.equal success
       end

       it "calls Relife.updateChar()"
         Relife.should.receive('updateChar')
         button.click();
       end

       it "should not call Relife.updateChar if the no-char-reload
class is on it"
         button.addClass('no-char-reload');
         updateChar_called.should.be false
         button.click();
         updateChar_called.should.be false
       end
     end

     describe "error"
       before_each
         stub(Relife, 'showError')
         ajaxLoader.css('visibility', 'visible');
         JSpec.XHR.returns('', 'application/json', 500);
       end

       it "should hide the ajax loader"
         button.click();
         ajaxLoader.css('visibility').should.equal 'hidden'
       end

       it "should call Relife.showError"
         Relife.should.receive('showError')
         button.click();
       end
     end
   end

   describe ".choice-adventure"
     before
       tested = 'choice-adventure'
     end

     should_behave_like('.loc-link')
   end

 end

Comments and changes to this ticket

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Tiny, full-featured JavaScript BDD framework.

People watching this ticket

Pages