/*global waitsFor:true expect:true describe:true beforeEach:true it:true */

describe("Discourse.Composer", function() {

  describe("replyLength", function() {

    it("returns the length of a basic reply", function() {
      var composer = Discourse.Composer.create({ reply: "basic reply" });
      expect(composer.get('replyLength')).toBe(11);
    });

    it("trims whitespaces", function() {
      var composer = Discourse.Composer.create({ reply: " \nbasic reply\t" });
      expect(composer.get('replyLength')).toBe(11);
    });

    it("count only significant whitespaces", function() {
      // this will count the '\n' only once
      var composer = Discourse.Composer.create({ reply: "ba sic\n\nreply" });
      expect(composer.get('replyLength')).toBe(12);
    });

    it("removes quotes", function() {
      var composer = Discourse.Composer.create({ reply: "1[quote=]not counted[/quote]2[quote=]at all[/quote]3" });
      expect(composer.get('replyLength')).toBe(3);
    });

    it("handles nested quotes correctly", function() {
      var composer = Discourse.Composer.create({ reply: "1[quote=]not[quote=]counted[/quote]yay[/quote]2" });
      expect(composer.get('replyLength')).toBe(2);
    });

  });

});
