describe("app", function () {
  it("has a controller", function () {
    expect(app.Controller).toBeDefined();
  });

  it("has a view", function () {
    expect(app.View).toBeDefined();
  });

  it("has a model", function () {
    expect(app.Model).toBeDefined();
  });

  it("has a store", function () {
    expect(app.Store).toBeDefined();
  });

  describe("acceptance testing", function () {
    var createItem;

    beforeEach(function () {
      createItem = function (name) {
        var $newTodoInput = jQuery("#new-todo");
        $newTodoInput.val(name);
        var e = new Event("keypress");
        e.keyCode = 13;
        $newTodoInput[0].dispatchEvent(e);
      };
    });

    afterEach(function () {
      var store = new app.Store('todos-vanillajs');
      store.drop(function () {});
    });

    it("enables the adding of todo items", function () {
      createItem("Make an acceptance test");

      expect(jQuery("#todo-count").text()).toEqual("1 item left");
    });

    it("allows deletion of todo items", function () {
      createItem("delete me");
      createItem("keep me");

      expect(jQuery("#todo-count").text()).toEqual("2 items left");

      jQuery("li:contains('delete me') .destroy").trigger("click");

      expect(jQuery("#todo-count").text()).toEqual("1 item left");
    });

    it("allows the completion of todo items", function () {
      createItem("complete me");

      expect(jQuery("li:contains('complete me')").hasClass("completed")).toEqual(false);
      expect(jQuery("#todo-count").text()).toEqual("1 item left");

      jQuery("li:contains('complete me') .toggle").trigger("click");

      expect(jQuery("li:contains('complete me')").hasClass("completed")).toEqual(true);
      expect(jQuery("#todo-count").text()).toEqual("0 items left");
    });
  });
});
@@ -1340,24 +1340,42 @@
  completion 
+and un-completion 
 of todo item
@@ -1800,32 +1800,968 @@
 %220 items left%22);
+%0A%0A      jQuery(%22li:contains('complete me') .toggle%22).trigger(%22click%22);%0A%0A      expect(jQuery(%22li:contains('complete me')%22).hasClass(%22completed%22)).toEqual(false);%0A      expect(jQuery(%22#todo-count%22).text()).toEqual(%221 item left%22);%0A    %7D);%0A%0A    it(%22sets all items to active when ALL of them are completed%22, function () %7B%0A      createItem(%22complete me%22);%0A      createItem(%22leave me%22);%0A      createItem(%22another to ignore%22);%0A      createItem(%22have this one completed too%22);%0A%0A      jQuery(%22#toggle-all%22).trigger(%22click%22);%0A      jQuery(%22#toggle-all%22).trigger(%22click%22);%0A%0A      expect(jQuery(%22li:contains('complete me')%22).hasClass(%22completed%22)).toEqual(false);%0A      expect(jQuery(%22li:contains('have this one completed too')%22).hasClass(%22completed%22)).toEqual(false);%0A      expect(jQuery(%22li:contains('leave me')%22).hasClass(%22completed%22)).toEqual(false);%0A      expect(jQuery(%22li:contains('another to ignore')%22).hasClass(%22completed%22)).toEqual(false);
 %0A    %7D);%0A  %7D);%0A%7D

Add more specs at acceptance level