From 05ee9938a95ce87bff3b1cde029a4a5fea294727 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Mon, 30 Jul 2012 14:53:40 +0200 Subject: [PATCH] More cleanup between tests to avoid Metamorph errors It seems that store is not automatically cleaned when calling app.destroy() as this is just regular property on app object. Furthermore, there is a bug with connectOutlet that prevents cleaning views that are set with it. I've added a small hack to save all the views added as outlets to be able to clean them after running tests. --- assets/javascripts/app/controllers.coffee | 13 +++++++++++++ assets/javascripts/spec/spec_helper.coffee | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/assets/javascripts/app/controllers.coffee b/assets/javascripts/app/controllers.coffee index 9c4de3be..4f32f94c 100644 --- a/assets/javascripts/app/controllers.coffee +++ b/assets/javascripts/app/controllers.coffee @@ -13,6 +13,19 @@ Travis.reopen @connectOutlet(outletName: 'top', controller: @topController, viewClass: Travis.TopView) @topController.set('tab', @get('name')) + connectOutlet: -> + view = @_super.apply(this, arguments) + + if view + _connectedOutletViews = Travis.app.get('_connectedOutletViews') + unless _connectedOutletViews + _connectedOutletViews = [] + + _connectedOutletViews.pushObject(view) + Travis.app.set('_connectedOutletViews', _connectedOutletViews) + + view + # TopController: Em.Controller.extend # userBinding: 'Travis.app.currentUser' diff --git a/assets/javascripts/spec/spec_helper.coffee b/assets/javascripts/spec/spec_helper.coffee index 16e97958..f7e958ae 100644 --- a/assets/javascripts/spec/spec_helper.coffee +++ b/assets/javascripts/spec/spec_helper.coffee @@ -2,7 +2,13 @@ minispade.require 'app' @reset = -> Em.run -> - Travis.app.destroy() if Travis.app + if Travis.app + if Travis.app.store + Travis.app.store.destroy() + if views = Travis.app.get('_connectedOutletViews') + views.forEach (v) -> v.destroy() + Travis.app.destroy() + waits(500) # TODO not sure what we need to wait for here $('#content').remove() $('body').append('
')