Merge remote branch 'upstream/master'

This commit is contained in:
Alec Leamas 2010-10-19 22:10:30 +02:00
commit d738846900
31 changed files with 262 additions and 239 deletions

View file

@ -23,7 +23,7 @@ class AspectsController < ApplicationController
else
flash[:error] = I18n.t('aspects.create.failure')
end
respond_with :location => aspects_manage_path
respond_with @aspect
end
def new

View file

@ -7,6 +7,14 @@ module ApplicationHelper
!@aspect.is_a?(Symbol) && @aspect.id == aspect.id
end
def aspect_or_all_path aspect
if @aspect.is_a? Aspect
aspect_path @aspect
else
aspects_path
end
end
def object_path(object, opts = {})
object = object.person if object.is_a? User
eval("#{object.class.to_s.underscore}_path(object, opts)")
@ -50,7 +58,7 @@ module ApplicationHelper
def person_image_tag(person)
image_location = person.profile.image_url
image_location ||= "/images/user/default.jpg"
image_location ||= "/images/user/default.png"
image_tag image_location, :class => "avatar", :alt => person.real_name, :title => person.real_name
end

View file

@ -14,12 +14,4 @@ module AspectsHelper
"<span class='grey' title=#{I18n.t('aspects.helper.aspect_not_empty')}>#{I18n.t('aspects.helper.remove')}</span>"
end
end
def aspect_id(aspect)
if aspect.class == Aspect
aspect.id
else
:all
end
end
end

View file

@ -17,6 +17,7 @@ class Aspect
belongs_to :user, :class_name => 'User'
validates_presence_of :name
validates_uniqueness_of :name, :scope => :user_id
timestamps!

View file

@ -27,21 +27,12 @@ class Person
timestamps!
before_save :strip_and_downcase_diaspora_handle
before_destroy :remove_all_traces
before_validation :clean_url
validates_presence_of :url, :profile, :serialized_public_key
validates_format_of :url, :with =>
/^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
def strip_and_downcase_diaspora_handle
if self.diaspora_handle
self.diaspora_handle.strip!
self.diaspora_handle.downcase!
end
end
def self.search(query)
return Person.all if query.to_s.empty?
query_tokens = query.to_s.strip.split(" ")
@ -95,12 +86,14 @@ class Person
def self.by_webfinger(identifier, opts = {})
#need to check if this is a valid email structure, maybe should do in JS
local_person = Person.first(:diaspora_handle => identifier.gsub('acct:', '').to_s)
query = /#{Regexp.escape(identifier.gsub('acct:', '').to_s)}/i
local_person = Person.first(:diaspora_handle => query)
if local_person
Rails.logger.info("Do not need to webfinger, found a local person #{local_person.real_name}")
local_person
elsif !identifier.include?("localhost") && !opts[:local]
#Get remote profile
begin
Rails.logger.info("Webfingering #{identifier}")
f = Redfinger.finger(identifier)

View file

@ -388,7 +388,7 @@ class User
end
def diaspora_handle
"#{self.username}@#{APP_CONFIG[:terse_pod_url]}".downcase
"#{self.username}@#{APP_CONFIG[:terse_pod_url]}"
end
def as_json(opts={})

View file

@ -8,20 +8,23 @@
$("#add_album_button").fancybox();
});
- content_for :left_pane do
.span-4.append-1.last
= render "shared/aspect_friends"
%h3 Albums
= link_to t('.new_album'), '#new_album_pane', {:class => "button", :id => "add_album_button"}
.span-15.last
%h3
= @aspect
Albums
= link_to t('.new_album'), '#new_album_pane', {:class => "button", :id => "add_album_button"}
.fancybox_content
#new_album_pane
= render "albums/new_album", :aspect => params[:aspect]
.fancybox_content
#new_album_pane
= render "albums/new_album", :aspect => params[:aspect]
%div
- for album in @albums
= render "album", :post => album
%div
- for album in @albums
= render "album", :post => album
#pagination
= will_paginate @albums
#pagination
= will_paginate @albums

View file

@ -9,29 +9,27 @@
});
});
= content_for :page_title do
= link_to "◂ #{t('.albums')}", albums_path(:aspect => @aspect)
- content_for :left_pane do
.span-4.append-1.last
= render "shared/aspect_friends"
%h3
= @album.name
="#{t('.updated')} #{how_long_ago(@album)}"
-if current_user.owns? @album
=render 'photos/new_photo'
= link_to t('.edit_album'), edit_album_path(@album), :class => 'button'
.span-19.last
%h3
= link_to "#{@aspect} Albums", albums_path(:aspect => @aspect)
.album_id{:id => @album.id, :style => "display:hidden;"}
= @album.name
="#{t('.updated')} #{how_long_ago(@album)}"
.right
-if current_user.owns? @album
=render 'photos/new_photo'
= link_to t('.edit_album'), edit_album_path(@album), :class => 'button'
-unless current_user.owns? @album
%h4= "#{t('.by')} #{@album.person.real_name}"
.album_id{:id => @album.id, :style => "display:hidden;"}
#thumbnails
- for photo in @album_photos
.image_thumb
= link_to (image_tag photo.url(:thumb_medium)), object_path(photo)
-unless current_user.owns? @album
%h4= "#{t('.by')} #{@album.person.real_name}"
#thumbnails
- for photo in @album_photos
.image_thumb
= link_to (image_tag photo.url(:thumb_medium)), object_path(photo)
#content_bottom
.back
= link_to "⇧ #{t('.albums')}", albums_path(:aspect => @aspect)

View file

@ -2,12 +2,7 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
#no_posts.empty_message{:style => ("display:none" unless @posts.count == 0)}
.null_arrow ⇧
%h3=t('.start_talking')
#no_friends.empty_message{:style => ("display:none" unless @friends.count == 0)}
- if (@aspect == :all) || (@aspect == :public)
%h3=t('.nobody')
%h4= link_to t('.add_friend'), aspects_manage_path
@ -17,4 +12,3 @@
%h4= link_to t('.add_friend_to', :aspect_name => @aspect.name), "#add_request_pane", :class => "add_request_button"
%h4= link_to t('.invite', :aspect_name => @aspect.name), "#invite_user_pane", :class => "invite_user_button", :class => "invite_user_button", :title => t('.invite')

View file

@ -0,0 +1,8 @@
-# Copyright (c) 2010, Diaspora Inc. This file is
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
#no_posts.empty_message{:style => ("display:none" unless @posts.count == 0)}
.null_arrow ⇧
%h3=t('.start_talking')

View file

@ -2,19 +2,17 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
- content_for :left_pane do
.span-4.append-1.last
= render "shared/aspect_friends"
- content_for :publish do
= render "shared/publisher", :aspect_ids => :all, :broadcast => true
.span-15.last
= render 'aspects/no_friends_message'
= render 'shared/publisher'
= render 'aspects/no_posts_message'
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
= render 'aspects/empty_messages'
= render "shared/publisher"
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
#pagination
= will_paginate @posts
#pagination
= will_paginate @posts

View file

@ -6,7 +6,13 @@
= javascript_include_tag 'jquery-ui-1.8.4.custom.min.js'
= javascript_include_tag 'aspect-edit.js'
- content_for :left_pane do
#section_header
%h2
Manage aspects
.right
= link_to(t('.add_a_new_aspect'), "#add_aspect_pane", :class => "new_aspect add_aspect_button button", :title => t('.add_a_new_aspect'))
.span-4.append-1.last
%h3=t('.requests')
.requests
@ -27,36 +33,34 @@
= render 'shared/invitations', :invites => @invites
%h2 Manage aspects
= link_to(t('.add_a_new_aspect'), "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => t('.add_a_new_aspect'))
.span-19.last
%ul#aspect_list
- for aspect in @aspects
%li.aspect
%ul#aspect_list
- for aspect in @aspects
%li.aspect
.aspect_name
%span.edit_name_field
%h3{:contenteditable => true}= aspect.name
%span.tip click to edit
.aspect_name
%span.edit_name_field
%h3{:contenteditable => true}= aspect.name
%span.tip click to edit
%ul.tools
%li= link_to t('.add_a_new_friend'), "#add_request_pane_#{aspect.id}", :class => 'add_request_button'
%li!= remove_link(aspect)
%ul.tools
%li= link_to t('.add_a_new_friend'), "#add_request_pane_#{aspect.id}", :class => 'add_request_button'
%li!= remove_link(aspect)
%ul.dropzone{:id => aspect.id}
%ul.dropzone{:id => aspect.id}
-if aspect.people.size < 1
%li.grey Drag to add people
-if aspect.people.size < 1
%li.grey Drag to add people
-else
-for person in aspect.people
-else
-for person in aspect.people
%li.person{:id => person.id, :from_aspect_id => aspect.id}
= person_image_tag(person)
.name
= link_to person.real_name, person
%li.person{:id => person.id, :from_aspect_id => aspect.id}
= person_image_tag(person)
.name
= link_to person.real_name, person
.fancybox_content
%div{:id => "add_request_pane_#{aspect.id}"}
= render "requests/new_request", :aspect => aspect
.fancybox_content
%div{:id => "add_request_pane_#{aspect.id}"}
= render "requests/new_request", :aspect => aspect

View file

@ -2,16 +2,17 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
- content_for :left_pane do
.span-4.append-1.last
= render "shared/aspect_friends"
= render 'aspects/empty_messages'
.span-15.last
= render 'aspects/no_friends_message'
= render 'shared/publisher'
= render 'aspects/no_posts_message'
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
= render "shared/publisher"
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
#pagination
= will_paginate @posts
#pagination
= will_paginate @posts

View file

@ -4,7 +4,7 @@
= javascript_include_tag 'FABridge', 'swfobject', 'web_socket'
:javascript
WebSocket.__swfLocation = "/javascripts/WebSocketMain.swf";
WebSocket.__swfLocation = "#{javascript_path 'WebSocketMain.swf'}";
$(document).ready(function(){
function debug(str){ $("#debug").append("<p>" + str); };

View file

@ -59,10 +59,7 @@
= render "shared/aspect_nav"
.container
.span-4.append-1.last
= yield :left_pane
.span-15.last
.span-24.last
= yield
.span-19.prepend-5.last

View file

@ -10,18 +10,19 @@
%span.from
= link_to person.real_name, person_path(person)
.right{:style=>"display:inline;"}
- if person.id == current_user.person.id
thats you!
- elsif current_user.friends.include?(person)
Already friends
- elsif current_user.pending_requests.find_by_person_id(person.id)
= link_to =t('.pending_request'), aspects_manage_path
- else
= form_for Request.new do |f|
= f.select(:aspect_id, @aspects_dropdown_array)
= f.hidden_field :destination_url, :value => person.diaspora_handle
= f.submit t('.add_friend')
.info
= person.diaspora_handle
.right{ :style => "display:inline;top:0;" }
- if person.id == current_user.person.id
thats you!
- elsif current_user.friends.include?(person)
Already friends
- elsif current_user.pending_requests.find_by_person_id(person.id)
= link_to =t('.pending_request'), aspects_manage_path
- else
= form_for Request.new do |f|
= f.select(:aspect_id, @aspects_dropdown_array)
= f.hidden_field :destination_url, :value => person.diaspora_handle
= f.submit t('.add_friend')

View file

@ -2,23 +2,13 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
- content_for :publish do
%h1
Search
.span-15.prepend-5.last
%h2
search results for
%u= params[:q]
=form_tag '/people', :method => "get" do
= text_field_tag :q, params[:q]
= submit_tag "search"
%ul#stream
- for person in @people
= render 'people/person', :person => person
- content_for :left_pane do
\.
%h1
search results for
%u= params[:q]
%ul#stream
- for person in @people
= render 'people/person', :person => person
= will_paginate @people
= will_paginate @people

View file

@ -5,7 +5,8 @@
- content_for :page_title do
profile
- content_for :left_pane do
.span-4.append-1.last
%h2= @person.real_name
#profile
.profile_photo
= person_image_link(@person)
@ -26,12 +27,12 @@
- if @person != current_user.person && current_user.friends.include?(@person)
= link_to t('.remove_friend'), @person, :confirm => t('.are_you_sure'), :method => :delete, :class => "button"
.span-20.last
.span-19.last
- if @posts
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
= will_paginate @posts
- else
%h3=t('no posts to display!')
.span-15.last
- if @posts.count > 0
%ul#stream
- for post in @posts
= render type_partial(post), :post => post unless post.class == Album
= will_paginate @posts
- else
%h3=t('no posts to display!')

View file

@ -18,6 +18,10 @@
- for aspect in current_user.aspects_with_post( post.id )
%li= link_to aspect.name, aspect
- if current_user.owns?(post)
.right
= link_to t('.delete'), status_message_path(post), :confirm => t('.are_you_sure'), :method => :delete, :remote => true, :class => "delete"
=t('.posted_a_new_photo_to')
= link_to post.album.name, object_path(post.album)

View file

@ -54,14 +54,12 @@
});//end document ready
= content_for :page_title do
= link_to "◂ #{@photo.album.name}", @photo.album
- content_for :left_pane do
.span-4.append-1.last
= render "shared/aspect_friends"
- content_for :publish do
%h1
.span-19.last
%h3
= link_to @photo.album.name, @photo.album
= @photo.image
= link_to "<< #{t('.prev')}", url_to_prev(@photo, @album), :rel => 'prefetch'
@ -70,39 +68,42 @@
|
= link_to "#{t('.next')} >>", url_to_next(@photo, @album), :rel => 'prefetch'
.right
-if current_user.owns? @album
= link_to t('.edit_photo'), edit_photo_path(@photo), :class => "button"
-if current_user.owns? @album
= link_to t('.edit_photo'), edit_photo_path(@photo), :class => "button"
%br
%br
%div{:id => @photo.id}
#show_photo
= linked_scaled_photo @photo, @album
.caption
-if current_user.owns? @photo
-if @photo.caption and @photo.caption != ""
= link_to 'Edit','javascript:void(0)', :id => "edit-desc", :class => "edit-desc"
.description
= @photo.caption
%div{:id => @photo.id}
#show_photo
= linked_scaled_photo @photo, @album
.caption
-if current_user.owns? @photo
-if @photo.caption and @photo.caption != ""
= link_to 'Edit','javascript:void(0)', :id => "edit-desc", :class => "edit-desc"
.description
= @photo.caption
%div{:class => 'clear'}
-if !@photo.caption or @photo.caption == ""
= link_to 'Add a description','javascript:void(0)', :id => "add-description", :class => "edit-desc"
-if current_user.owns? @photo
%div{:class => 'clear'}
-if !@photo.caption or @photo.caption == ""
= link_to 'Add a description','javascript:void(0)', :id => "add-description", :class => "edit-desc"
= form_for @photo do |p|
= p.text_field :caption, :value => @photo.caption
= p.submit
%div{:class => 'clear'}
= form_for @photo do |p|
= p.text_field :caption, :value => @photo.caption
= p.submit
%div{:class => 'clear'}
%h4{:class => "show_post_comments"}
= "#{t('.comments')} (#{@photo.comments.count})"
= render "comments/comments", :post => @photo
#content_bottom
.back
= link_to "⇧ #{@album.name}", album_path(@album)
#content_bottom
.back
= link_to "⇧ #{@album.name}", album_path(@album)
-if current_user.owns? @album
.right
= link_to t('.delete_photo'), @photo, :confirm => t('.are_you_sure'), :method => :delete, :class => 'button'
-if current_user.owns? @album
.right
= link_to t('.delete_photo'), @photo, :confirm => t('.are_you_sure'), :method => :delete, :class => 'button'
%h4{:class => "show_post_comments"}
= "#{t('.comments')} (#{@photo.comments.count})"
= render "comments/comments", :post => @photo

View file

@ -28,7 +28,7 @@
%br
%br
%ul
%li= link_to 'stream', aspect_path(@aspect)
%li= link_to 'stream', aspect_or_all_path(@aspect)
%li= link_to t('.photos'), albums_path(:aspect => @aspect)
%br

View file

@ -9,12 +9,14 @@
- for aspect in @aspects
%li{:class => ("selected" if current_aspect?(aspect))}
= link_for_aspect aspect
%li
= link_to '+', '#add_aspect_pane', :class => "add_aspect_button"
%ul{ :style => "position:absolute;right:0;bottom:0.01em;"}
%li{ :style => "margin-right:0;", :class => ("selected" if @aspect == :manage)}
= link_to ( (@request_count == 0)? t('.manage') : "#{t('.manage')} (#{@request_count})"), {:controller => :aspects, :action => :manage}, :class => "edit_aspect_button", :class => new_request(@request_count), :title => t('.manage_your_aspects')
.yo{ :style => "display:none;"}
.fancybox_content
#add_aspect_pane
= render "aspects/new_aspect"

View file

@ -19,7 +19,7 @@
%li= link_to aspect.name, aspect
- if current_user.owns?(post)
.destroy_link
.right
= render "shared/reshare", :post => post, :current_user => current_user
= link_to t('.delete'), status_message_path(post), :confirm => t('.are_you_sure'), :method => :delete, :remote => true, :class => "delete"

View file

@ -3,7 +3,7 @@
-# the COPYRIGHT file.
:javascript
$("#settings_nav li > a").click( function() {
$("#settings_nav li > a").live("click", function() {
var target = "#"+$(this).attr('class');
if( !$(target).is(":visible") ) {
$(".settings_pane").fadeOut(200, function() {
@ -12,22 +12,21 @@
}
});
- content_for :publish do
%h2="#{t('.editing_profile')}"
- content_for :left_pane do
#section_header
%h2
Settings
%ul#settings_nav
%li=link_to 'Profile', '#', :class => 'profile'
%li=link_to 'Account', '#', :class => 'account'
%li=link_to 'Services', '#', :class => 'services'
#profile.settings_pane{:style=>"display:block;"}
= render 'users/profile'
.span-19.prepend-5.last
#profile.settings_pane{:style=>"display:block;"}
= render 'users/profile'
#account.settings_pane
= render 'users/account'
#account.settings_pane
= render 'users/account'
#services.settings_pane
= render 'users/services'
#services.settings_pane
= render 'users/services'

View file

@ -79,13 +79,14 @@ en:
friends_albums: "Friends Albums"
your_albums: "Your Albums"
aspects:
empty_messages:
start_talking: "Nobody has said anything yet. Get the conversation started!"
no_friends_message:
nobody: "We know you have friends, bring them to Diaspora!"
nobody_in_aspect: "Your aspect '%{aspect_name}' is empty."
add_friend: "Add a friend"
add_friend_to: "Add someone to %{aspect_name}"
invite: "Invite someone to join Diaspora!"
no_posts_message:
start_talking: "Nobody has said anything yet. Get the conversation started!"
manage:
add_a_new_aspect: "Add a new aspect"
add_a_new_friend: "Add a new friend"
@ -149,6 +150,8 @@ en:
photo:
show_comments: "show comments"
posted_a_new_photo_to: "posted a new photo to"
delete: "Delete"
are_you_sure: "Are you sure?"
new:
new_photo: "New Photo"
back_to_list: "Back to List"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -26,7 +26,7 @@ $(document).ready(function(){
});
//buttons//////
$("#add_aspect_button").fancybox({ 'titleShow' : false , 'hideOnOverlayClick' : false });
$(".add_aspect_button").fancybox({ 'titleShow' : false , 'hideOnOverlayClick' : false });
$("#add_request_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$(".invite_user_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });
$(".add_request_button").fancybox({ 'titleShow': false , 'hideOnOverlayClick' : false });

View file

@ -187,6 +187,7 @@ ul#stream
:min-height 50px
:list-style none
:padding 12px 0
:right 12px
:border
:bottom 1px solid #eee
@ -195,12 +196,9 @@ ul#stream
:color #fafafa
:border
:bottom 1px solid #ddd
.destroy_link
.right
:display inline
.right
:top 0
.avatar
:border-radius 5px
@ -216,9 +214,6 @@ li.message
:margin
:right 15px
.delete:hover
:background #eee
.content
:margin
:top -4px
@ -292,14 +287,14 @@ li.message
:color #005D9C
.destroy_link .reshare_pane .reshare_button a.inactive
.right .reshare_pane .reshare_button a.inactive
:color #ccc
&:hover
:text
:decoration none
:cursor default
.destroy_link .reshare_pane
.right .reshare_pane
:margin
:left 5px
:right 5px
@ -495,12 +490,13 @@ ul.comment_set
a
:padding 3px
li.message .from .destroy_link
li.message .from .right
:display none
:position absolute
:right 0
:right 12px
:font
:size 12px
:color #999
a
:color #999
:font
@ -941,22 +937,20 @@ h1.big_text
:opacity 0.9
ul#settings_nav
:display inline
:list
:style none
:padding 0
:marign 0
:font
:size larger
:size large
:margin
:left 5.68em
> li
:display inline
:margin
:right 1em
a
:font
:size smaller
:display block
:height 100%
:border
:bottom 1px solid #eee
:padding 2px
@ -1036,3 +1030,17 @@ header
.edit_photo
:display none
#section_header
:width 100%
:border
:bottom 2px solid #777
:position relative
:margin
:bottom 2em
:padding
:bottom 1em
h2
:display inline

View file

@ -39,6 +39,21 @@ describe Aspect do
end
end
describe 'validation' do
before do
@aspect = @user.aspect(:name => 'losers')
end
it 'has a unique name for one user' do
aspect2 = @user.aspect(:name => @aspect.name)
aspect2.valid?.should be_false
end
it 'has no uniqueness between users' do
aspect2 = @user2.aspect(:name => @aspect.name)
aspect2.valid?.should be_true
end
end
describe 'querying' do
before do
@aspect = @user.aspect(:name => 'losers')

View file

@ -14,11 +14,6 @@ describe Person do
end
describe '#diaspora_handle' do
it 'should downcase and strip the handle before it saves' do
p = Factory.build(:person, :diaspora_handle => " FOOBaR@example.com ")
p.save
p.diaspora_handle.should == "foobar@example.com"
end
context 'local people' do
it 'uses the pod config url to set the diaspora_handle' do
@user.person.diaspora_handle.should == @user.username + "@" + APP_CONFIG[:terse_pod_url]
@ -30,14 +25,20 @@ describe Person do
@person.diaspora_handle.include?(APP_CONFIG[:terse_pod_url]).should be false
end
end
describe 'validation' do
it 'is unique' do
person_two = Factory.build(:person, :url => @person.diaspora_handle)
person_two.valid?.should be_false
end
it 'is case insensitive' do
person_two = Factory.build(:person, :url => @person.diaspora_handle.upcase)
person_two.valid?.should be_false
end
end
end
it 'should not allow two people with the same diaspora_handle' do
person_two = Factory.build(:person, :url => @person.diaspora_handle)
person_two.valid?.should == false
end
describe 'xml' do
describe 'xml' do
before do
@xml = @person.to_xml.to_s
end
@ -52,7 +53,7 @@ describe Person do
end
end
it 'should know when a post belongs to it' do
it '#owns? posts' do
person_message = Factory.create(:status_message, :person => @person)
person_two = Factory.create(:person)
@ -188,6 +189,12 @@ describe Person do
person = Person.by_webfinger(user.person.diaspora_handle)
person.should == user.person
end
it "is case insensitive" do
user = Factory(:user, :username => "SaMaNtHa")
person = Person.by_webfinger(user.person.diaspora_handle.upcase)
person.should == user.person
end
end
it 'creates a stub for a remote user' do

View file

@ -83,11 +83,6 @@ describe User do
it 'uses the pod config url to set the diaspora_handle' do
user.diaspora_handle.should == user.username + "@" + APP_CONFIG[:terse_pod_url]
end
it 'should be lowercase, even if username is uppercase' do
user.username = "fooBAR"
user.diaspora_handle.should == (user.username + "@" + APP_CONFIG[:terse_pod_url]).downcase
end
end
context 'profiles' do