From c1f2bbac884aa0f7d54983390fb61cd5b4fb247d Mon Sep 17 00:00:00 2001 From: Dennis Collinson Date: Thu, 12 Apr 2012 11:56:11 -0700 Subject: [PATCH] Wallpaper frame selected when post has one photo --- app/assets/javascripts/app/models/post.js | 9 +++++ .../app/views/template_picker_view.js | 2 +- .../app/views/template_picker_view_spec.js | 33 +++++++++++++++++-- spec/javascripts/helpers/factory.js | 5 +-- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/app/models/post.js b/app/assets/javascripts/app/models/post.js index b023860af..61038121a 100644 --- a/app/assets/javascripts/app/models/post.js +++ b/app/assets/javascripts/app/models/post.js @@ -12,6 +12,15 @@ app.models.Post = Backbone.Model.extend({ this.participations = this.participations || new app.collections.Participations([], {post : this}); // load in the user like initially }, + setFrameName : function(){ + this.set({frame_name : findTheme(this)}) + + + function findTheme(model) { + return model.get("photos").length == 1 ? "Wallpaper" : "Day" + } + }, + createdAt : function() { return this.timeOf("created_at"); }, diff --git a/app/assets/javascripts/app/views/template_picker_view.js b/app/assets/javascripts/app/views/template_picker_view.js index 1b55a12b0..9293073a5 100644 --- a/app/assets/javascripts/app/views/template_picker_view.js +++ b/app/assets/javascripts/app/views/template_picker_view.js @@ -6,7 +6,7 @@ app.views.TemplatePicker = app.views.Base.extend({ }, initialize : function(){ - this.model.set({frame_name : 'Day'}) + this.model.setFrameName() }, postRenderTemplate : function(){ diff --git a/spec/javascripts/app/views/template_picker_view_spec.js b/spec/javascripts/app/views/template_picker_view_spec.js index 69d2dc82b..9f9147b8d 100644 --- a/spec/javascripts/app/views/template_picker_view_spec.js +++ b/spec/javascripts/app/views/template_picker_view_spec.js @@ -1,12 +1,41 @@ describe("app.views.TemplatePicker", function(){ beforeEach(function(){ this.model = factory.statusMessage({frame_name: undefined}) - this.view = new app.views.TemplatePicker({model : this.model }) + this.view = createView(this.model) }) + function createView(model){ + return new app.views.TemplatePicker({model : model }) + } + describe("initialization", function(){ + context("when the model has photos:", function(){ + context("one photo", function(){ + beforeEach(function(){ + this.model.set({photos : [factory.photoAttrs()]}) + }) + + it("sets the frame name to Wallpaper", function(){ + createView(this.model) + expect(this.model.get("frame_name")).toBe("Wallpaper") + }) + }) + + context("two photos", function(){ + beforeEach(function(){ + this.model.set({photos : [factory.photoAttrs(), factory.photoAttrs()]}) + }) + + it("sets the frame name to Wallpaper", function(){ + createView(this.model) + expect(this.model.get("frame_name")).toBe("Day") + }) + }) + }) + it("sets the frame_name of the model to 'Day' by default", function(){ - expect(this.view.model.get("frame_name")).toBe("Day") + createView(this.model) + expect(this.model.get("frame_name")).toBe("Day") }) }) diff --git a/spec/javascripts/helpers/factory.js b/spec/javascripts/helpers/factory.js index b1ff24272..b51b6d1f0 100644 --- a/spec/javascripts/helpers/factory.js +++ b/spec/javascripts/helpers/factory.js @@ -75,11 +75,12 @@ factory = { }, photoAttrs : function(overrides){ + var id = this.id.next(); return _.extend({ author: factory.userAttrs(), created_at: "2012-03-27T20:11:52Z", - guid: "8b0db16a4c4307b2", - id: 117, + guid: "8b0db16a4c4307b2" + id, + id: id, sizes: { large: "http://localhost:3000/uploads/images/scaled_full_d85410bd19db1016894c.jpg", medium: "http://localhost:3000/uploads/images/thumb_medium_d85410bd19db1016894c.jpg",