From 257d6f414aea6b2876be96fae4038be177cd41df Mon Sep 17 00:00:00 2001 From: Dan Hansen & Sarah Mei <pair+ohaibbq+sarah@joindiaspora.com> Date: Thu, 25 Nov 2010 22:24:25 -0800 Subject: [PATCH] Top-level Diaspora object for js widget management --- public/javascripts/diaspora.js | 18 ++++++++++++++++++ spec/javascripts/diaspora-spec.js | 28 ++++++++++++++++++++++++++++ spec/javascripts/support/jasmine.yml | 1 + 3 files changed, 47 insertions(+) create mode 100644 public/javascripts/diaspora.js create mode 100644 spec/javascripts/diaspora-spec.js diff --git a/public/javascripts/diaspora.js b/public/javascripts/diaspora.js new file mode 100644 index 0000000000..4543959fe0 --- /dev/null +++ b/public/javascripts/diaspora.js @@ -0,0 +1,18 @@ +var Diaspora = Diaspora || {}; +Diaspora.widgets = Diaspora.widgets || { + pageWidgets: {}, + + add: function(widgetId, widget) { + this.pageWidgets[widgetId] = widget; + }, + + remove: function(widgetId) { + delete this.pageWidgets[widgetId]; + }, + + init: function() { + for (var widgetId in this.pageWidgets) { + this.pageWidgets[widgetId].start(); + } + } +}; \ No newline at end of file diff --git a/spec/javascripts/diaspora-spec.js b/spec/javascripts/diaspora-spec.js new file mode 100644 index 0000000000..259d1288d0 --- /dev/null +++ b/spec/javascripts/diaspora-spec.js @@ -0,0 +1,28 @@ +describe("Diaspora", function() { + describe("widgets", function() { + beforeEach(function() { + Diaspora.widgets.pageWidgets = {}; + }); + describe("add", function() { + it("adds a widget to the list of pageWidgets", function() { + expect(Diaspora.widgets.pageWidgets["nameOfWidget"]).not.toBeDefined(); + Diaspora.widgets.add("nameOfWidget", {}); + expect(Diaspora.widgets.pageWidgets["nameOfWidget"]).toBeDefined(); + }); + }); + describe("remove", function() { + it("removes a widget from the list of pageWidgets", function() { + Diaspora.widgets.add("nameOfWidget", {}); + expect(Diaspora.widgets.pageWidgets["nameOfWidget"]).toBeDefined(); + Diaspora.widgets.remove("nameOfWidget"); + expect(Diaspora.widgets.pageWidgets["nameOfWidget"]).not.toBeDefined(); + }); + }); + describe("init", function() { + Diaspora.widgets.add("nameOfWidget", {start:$.noop}); + spyOn(Diaspora.widgets.pageWidgets["nameOfWidget"], "start"); + Diaspora.widgets.init(); + expect(Diaspora.widgets.pageWidgets["nameOfWidget"].start).toHaveBeenCalled(); + }); + }); +}); diff --git a/spec/javascripts/support/jasmine.yml b/spec/javascripts/support/jasmine.yml index 0b49568755..7f1788cae2 100644 --- a/spec/javascripts/support/jasmine.yml +++ b/spec/javascripts/support/jasmine.yml @@ -14,6 +14,7 @@ src_files: - public/javascripts/vendor/jquery144.js - public/javascripts/vendor/jquery-ui-1.8.6.custom.min.js - public/javascripts/vendor/jquery.tipsy.js + - public/javascripts/diaspora.js - public/javascripts/mobile.js - public/javascripts/aspect-edit.js - public/javascripts/web-socket-receiver.js -- GitLab