Skip to content
Extraits de code Groupes Projets
Valider 41e8a32b rédigé par Maxwell Salzberg's avatar Maxwell Salzberg
Parcourir les fichiers

tests for data methods

parent 86f4f983
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
has_mobile_fu has_mobile_fu
helper_method :all_aspects
protect_from_forgery :except => :receive protect_from_forgery :except => :receive
before_filter :ensure_http_referer_is_set before_filter :ensure_http_referer_is_set
before_filter :set_header_data, :except => [:create, :update] before_filter :set_header_data, :except => [:create, :update]
...@@ -17,6 +16,8 @@ class ApplicationController < ActionController::Base ...@@ -17,6 +16,8 @@ class ApplicationController < ActionController::Base
inflection_method :grammatical_gender => :gender inflection_method :grammatical_gender => :gender
helper_method :all_aspects, :object_aspect_ids
def ensure_http_referer_is_set def ensure_http_referer_is_set
request.env['HTTP_REFERER'] ||= '/aspects' request.env['HTTP_REFERER'] ||= '/aspects'
end end
...@@ -28,8 +29,14 @@ class ApplicationController < ActionController::Base ...@@ -28,8 +29,14 @@ class ApplicationController < ActionController::Base
@notification_count = Notification.for(current_user, :unread =>true).count @notification_count = Notification.for(current_user, :unread =>true).count
@unread_message_count = ConversationVisibility.sum(:unread, :conditions => "person_id = #{current_user.person.id}") @unread_message_count = ConversationVisibility.sum(:unread, :conditions => "person_id = #{current_user.person.id}")
end end
@object_aspect_ids = [] end
end
##helpers
def object_aspect_ids
if user_signed_in?
@object_aspect_ids ||= []
end end
end end
......
...@@ -5,8 +5,11 @@ ...@@ -5,8 +5,11 @@
class PhotosController < ApplicationController class PhotosController < ApplicationController
before_filter :authenticate_user! before_filter :authenticate_user!
helper_method :object_aspect_ids, :parent, :photo, :additional_photos, :next_photo, :previous_photo, :ownership
respond_to :html, :json respond_to :html, :json
def index def index
@post_type = :photos @post_type = :photos
@person = Person.find_by_id(params[:person_id]) @person = Person.find_by_id(params[:person_id])
...@@ -138,30 +141,8 @@ class PhotosController < ApplicationController ...@@ -138,30 +141,8 @@ class PhotosController < ApplicationController
end end
def show def show
@photo = current_user.find_visible_post_by_id(params[:id], :type => 'Photo') if photo
if @photo respond_with photo
@parent = StatusMessage.where(:guid => @photo.status_message_guid).includes(:photos).first if @photo.status_message_guid
#if photo is not an attachment, fetch comments for self
if @parent
@additional_photos = @photo.status_message.photos
if @additional_photos
@next_photo = @additional_photos[@additional_photos.index(@photo)+1]
@prev_photo = @additional_photos[@additional_photos.index(@photo)-1]
@next_photo ||= @additional_photos.first
end
else
@parent = @photo
end
@object_aspect_ids = []
if @parent_aspects = @parent.aspects.where(:user_id => current_user.id)
@object_aspect_ids = @parent_aspects.map{|a| a.id}
end
@ownership = current_user.owns? @photo
respond_with @photo
else else
begin begin
redirect_to :back redirect_to :back
...@@ -169,7 +150,6 @@ class PhotosController < ApplicationController ...@@ -169,7 +150,6 @@ class PhotosController < ApplicationController
redirect_to aspects_path redirect_to aspects_path
end end
end end
end end
def edit def edit
...@@ -200,6 +180,45 @@ class PhotosController < ApplicationController ...@@ -200,6 +180,45 @@ class PhotosController < ApplicationController
end end
end end
# helpers
# used on the show page to show which aspects are selected
def object_aspect_ids
if params[:action] == 'show' && parent_aspects = parent.aspects.where(:user_id => current_user.id).all
@object_aspect_ids ||= parent_aspects.map!{|a| a.id}
else
super
end
end
def ownership
@ownership ||= current_user.owns? photo
end
def parent
@parent ||= StatusMessage.where(:guid => photo.status_message_guid).includes(:photos).first if photo.status_message_guid
@parent ||= photo
end
def photo
@photo ||= current_user.find_visible_post_by_id(params[:id], :type => 'Photo')
@photo
end
def additional_photos
if photo.status_message_guid?
@additional_photos ||= photo.status_message.photos
end
end
def next_photo
@next_photo ||= additional_photos[additional_photos.index(photo)+1]
@next_photo ||= additional_photos.first
end
def previous_photo
@previous_photo ||= additional_photos[additional_photos.index(photo)-1]
end
private private
......
# Copyright (c) 2010, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
module PhotosHelper
end
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
= link_to t('all_aspects'), aspects_path, :class => 'home_selector' = link_to t('all_aspects'), aspects_path, :class => 'home_selector'
- for aspect in all_aspects - for aspect in all_aspects
%li{:data=>{:guid=>aspect.id}, :class => ("selected" if @object_aspect_ids.include?(aspect.id))} %li{:data=>{:guid=>aspect.id}, :class => ("selected" if object_aspect_ids.include?(aspect.id))}
= link_for_aspect(aspect, :class => 'aspect_selector name', :title => t('contacts', :count => aspect.contacts.size)) = link_for_aspect(aspect, :class => 'aspect_selector name', :title => t('contacts', :count => aspect.contacts.size))
%li %li
......
...@@ -7,59 +7,59 @@ ...@@ -7,59 +7,59 @@
.span-16.append-4.prepend-4.last .span-16.append-4.prepend-4.last
#photo_controls #photo_controls
-if @additional_photos && @additional_photos.length > 1 -if additional_photos && additional_photos.length > 1
.right .right
=link_to "← #{t('previous')}", @prev_photo, :rel => 'prefetch', :id => 'photo_show_left' =link_to "← #{t('previous')}", previous_photo, :rel => 'prefetch', :id => 'photo_show_left'
\/ \/
=link_to "#{t('next')} →", @next_photo, :rel => 'prefetch', :id => 'photo_show_right' =link_to "#{t('next')} →", next_photo, :rel => 'prefetch', :id => 'photo_show_right'
#original_post_info #original_post_info
= render 'shared/author_info', :person => @photo.author, :post => @photo = render 'shared/author_info', :person => photo.author, :post => photo
#photo_container #photo_container
#show_photo{:data=>{:guid=>@photo.id}} #show_photo{:data=>{:guid=>photo.id}}
-if @ownership -if ownership
= image_tag 'ajax-loader.gif', :id => "photo_spinner", :class => "hidden" = image_tag 'ajax-loader.gif', :id => "photo_spinner", :class => "hidden"
= image_tag @photo.url(:scaled_full) = image_tag photo.url(:scaled_full)
-else -else
= image_tag @photo.url(:scaled_full) = image_tag photo.url(:scaled_full)
#caption #caption
= @photo.text = photo.text
- if @ownership - if ownership
.photo_options{:data=>{:actor=>"#{@photo.author.owner.id}", :actor_person => "#{@photo.author.id}", :image_url => "#{@photo.url(:thumb_large)}"}} .photo_options{:data=>{:actor=>"#{photo.author.owner.id}", :actor_person => "#{photo.author.id}", :image_url => "#{photo.url(:thumb_large)}"}}
= link_to t('.make_profile_photo'), photo_make_profile_photo_path(@photo), :method => :put, :remote => true, :class => 'make_profile_photo' = link_to t('.make_profile_photo'), photo_make_profile_photo_path(photo), :method => :put, :remote => true, :class => 'make_profile_photo'
| |
= link_to t('.edit'), '#', :id => "edit_photo_toggle" = link_to t('.edit'), '#', :id => "edit_photo_toggle"
%br %br
%hr %hr
- if @photo.status_message - if photo.status_message
.span-8.last .span-8.last
%p %p
= markdownify(@photo.status_message.text) = markdownify(photo.status_message.text)
%span{:style=>'font-size:smaller'} %span{:style=>'font-size:smaller'}
=link_to t('.collection_permalink'), @photo.status_message =link_to t('.collection_permalink'), photo.status_message
%br %br
%br %br
.span-7.prepend-1 .span-7.prepend-1
.show_photo_attachments .show_photo_attachments
- for photo in @additional_photos - for photo in additional_photos
= link_to (image_tag photo.url(:thumb_small), :class => 'thumb_small'), object_path(photo) = link_to (image_tag photo.url(:thumb_small), :class => 'thumb_small'), object_path(photo)
#photo_edit_options #photo_edit_options
%h4= t('.edit_delete_photo') %h4= t('.edit_delete_photo')
%p %p
= form_for @photo, :remote => true do |p| = form_for photo, :remote => true do |p|
= p.text_field :text, :value => @photo.text = p.text_field :text, :value => photo.text
= p.submit t('.update_photo') = p.submit t('.update_photo')
%p %p
= button_to t('.delete_photo'), @photo, :confirm => t('are_you_sure'), :method => :delete = button_to t('.delete_photo'), photo, :confirm => t('are_you_sure'), :method => :delete
.span-16.prepend-4.append-4.last .span-16.prepend-4.append-4.last
#photo_stream.stream.show #photo_stream.stream.show
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
/ | / |
/ = link_to t('shared.stream_element.dislike'), likes_path(:positive => 'false', :post_id => @parent.id), :method => :post, :class => "dislike_it", :remote => true / = link_to t('shared.stream_element.dislike'), likes_path(:positive => 'false', :post_id => @parent.id), :method => :post, :class => "dislike_it", :remote => true
%div{:data=>{:guid=>@parent.id}} %div{:data=>{:guid=>parent.id}}
.likes_container .likes_container
= render "likes/likes", :post_id => @parent.id, :likes => @parent.likes, :dislikes => @parent.dislikes = render "likes/likes", :post_id => parent.id, :likes => parent.likes, :dislikes => parent.dislikes
= render "comments/comments", :post => @parent, :comments => @parent.comments, :always_expanded => true = render "comments/comments", :post => parent, :comments => parent.comments, :always_expanded => true
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
#show_content.photo #show_content.photo
= image_tag @photo.url(:scaled_full) = image_tag photo.url(:scaled_full)
-if @additional_photos && @additional_photos.length > 1 -if additional_photos && additional_photos.length > 1
#photo_controls #photo_controls
%table %table
%tr %tr
%td %td
=link_to "←", @prev_photo, :rel => 'prefetch', :class => 'arrow' =link_to "←", previous_photo, :rel => 'prefetch', :class => 'arrow'
%td{:width => '100%'} %td{:width => '100%'}
%td %td
=link_to "→", @next_photo, :rel => 'prefetch', :class => 'arrow' =link_to "→", next_photo, :rel => 'prefetch', :class => 'arrow'
...@@ -60,7 +60,7 @@ describe PhotosController do ...@@ -60,7 +60,7 @@ describe PhotosController do
it "assigns the photo" do it "assigns the photo" do
assigns[:photo].should == @alices_photo assigns[:photo].should == @alices_photo
assigns[:ownership].should be_true @controller.ownership.should be_true
end end
end end
...@@ -75,7 +75,7 @@ describe PhotosController do ...@@ -75,7 +75,7 @@ describe PhotosController do
it "assigns the photo" do it "assigns the photo" do
assigns[:photo].should == @bobs_photo assigns[:photo].should == @bobs_photo
assigns[:ownership].should be_false @controller.ownership.should be_false
end end
end end
...@@ -111,7 +111,7 @@ describe PhotosController do ...@@ -111,7 +111,7 @@ describe PhotosController do
it "assigns the photo" do it "assigns the photo" do
assigns[:photo].should == @photo assigns[:photo].should == @photo
assigns[:ownership].should be_false @controller.ownership.should be_false
end end
end end
end end
...@@ -183,4 +183,72 @@ describe PhotosController do ...@@ -183,4 +183,72 @@ describe PhotosController do
response.code.should == "422" response.code.should == "422"
end end
end end
end
\ No newline at end of file
describe 'data helpers' do
describe '.object_aspect_ids' do
it 'on show, assigns object aspect ids' do
get :show, :id => @alices_photo.id
@controller.object_aspect_ids.should == [alice.aspects.first.id]
end
it 'on index, it is empty' do
get :index, :person_id => alice.person.id
@controller.object_aspect_ids.should == []
end
end
describe '.ownership' do
it 'is true if current user owns the photo' do
get :show, :id => @alices_photo.id
@controller.ownership.should be_true
end
it 'is true if current user owns the photo' do
get :show, :id => @bobs_photo.id
@controller.ownership.should be_false
end
end
describe 'parent' do
it 'grabs the status message of the photo if a parent exsists' do
sm = alice.post(:status_message, :text => 'yes', :to => alice.aspects.first)
@alices_photo.status_message = sm
@alices_photo.save
get :show, :id => @alices_photo.id
@controller.parent.id.should == sm.id
end
it 'uses the photo if no status_message exsists' do
get :show, :id => @alices_photo.id
@controller.parent.id.should == @alices_photo.id
end
end
describe '.photo' do
it 'returns a visible photo, based on the :id param' do
get :show, :id => @alices_photo.id
@controller.photo.id.should == @alices_photo.id
end
end
describe '.additonal_photos' do
it 'finds all of a parent status messages photos' do
sm = alice.post(:status_message, :text => 'yes', :to => alice.aspects.first)
@alices_photo.status_message = sm
@alices_photo.save
get :show, :id => @alices_photo.id
@controller.additional_photos.should include(@alices_photo)
end
end
describe '.next_photo' do
end
describe '.previous_photo' do
end
end
end
# Copyright (c) 2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
#require 'spec_helper'
describe PhotosHelper do
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter