From c841a47a370b903b3618c3769b9428ef4cfceef6 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sun, 21 Nov 2010 23:40:39 -0800 Subject: [PATCH] status messages validate on presence of message OR one or more photos. took gifs out of carrierwave's whitelist, SORRY JAMIE. --- app/models/status_message.rb | 11 ++++++++++- app/uploaders/image_uploader.rb | 2 +- spec/models/status_message_spec.rb | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/models/status_message.rb b/app/models/status_message.rb index d2d4c580a..42be8a95c 100644 --- a/app/models/status_message.rb +++ b/app/models/status_message.rb @@ -11,7 +11,7 @@ class StatusMessage < Post key :message, String many :photos, :class => Photo, :foreign_key => :status_message_id - validates_presence_of :message + validate :message_or_photos_present? attr_accessible :message @@ -28,5 +28,14 @@ class StatusMessage < Post XML end + + protected + + def message_or_photos_present? + unless self.message || self.photos.count > 0 + errors[:base] << 'Status message requires a message or at least one photo' + end + end + end diff --git a/app/uploaders/image_uploader.rb b/app/uploaders/image_uploader.rb index cf1a67ee0..f94189076 100644 --- a/app/uploaders/image_uploader.rb +++ b/app/uploaders/image_uploader.rb @@ -12,7 +12,7 @@ class ImageUploader < CarrierWave::Uploader::Base end def extension_white_list - %w(jpg jpeg gif png) + %w(jpg jpeg png) end def filename diff --git a/spec/models/status_message_spec.rb b/spec/models/status_message_spec.rb index 8297640fe..a6fd43552 100644 --- a/spec/models/status_message_spec.rb +++ b/spec/models/status_message_spec.rb @@ -5,16 +5,24 @@ require 'spec_helper' describe StatusMessage do + before do - @user = make_user - @aspect = @user.aspects.create(:name => "losers") + @user = make_user + @aspect = @user.aspects.create(:name => "losers") end - it "should have a message" do + it "should have either a message or at least one photo" do n = Factory.build(:status_message, :message => nil) - n.valid?.should be false + n.valid?.should be_false n.message = "wales" - n.valid?.should be true + n.valid?.should be_true + n.message = nil + + photo = @user.build_post(:photo, :user_file => uploaded_photo, :to => @aspect.id) + photo.save! + + n.photos << photo + n.valid?.should be_true end it 'should be postable through the user' do