Commit 9e7f0323 authored by zhitomirskiyi's avatar zhitomirskiyi

persists open aspects across logins also fixed the status message controller spec broken in master

parent 88986508
......@@ -15,6 +15,8 @@ class AspectsController < ApplicationController
else
@aspects = current_user.aspects.includes(:contacts => {:person => :profile})
end
current_user.open_aspects = params[:a_ids]
current_user.save
# redirect to signup
if current_user.getting_started == true || @aspects.blank?
......
......@@ -6,7 +6,7 @@ class HomeController < ApplicationController
def show
if current_user
redirect_to aspects_path
redirect_to :controller => 'aspects', :action => 'index', :a_ids => current_user.open_aspects
elsif is_mobile_device?
redirect_to user_session_path
else
......
......@@ -38,6 +38,9 @@ class User < ActiveRecord::Base
has_many :contact_people, :through => :contacts
has_many :services
serialize :open_aspects, Array
before_destroy :disconnect_everyone, :remove_person
before_save do
person.save if person
......
class AddOpenAspectsToUser < ActiveRecord::Migration
def self.up
add_column(:users, :open_aspects, :text)
end
def self.down
remove_column(:users, :open_aspects)
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20110130072907) do
ActiveRecord::Schema.define(:version => 20110201013408) do
create_table "aspect_memberships", :force => true do |t|
t.integer "aspect_id", :null => false
......@@ -312,10 +312,8 @@ ActiveRecord::Schema.define(:version => 20110130072907) do
t.boolean "unread", :default => true, :null => false
t.datetime "created_at"
t.datetime "updated_at"
t.string "mongo_id"
end
add_index "notifications", ["mongo_id"], :name => "index_notifications_on_mongo_id"
add_index "notifications", ["recipient_id"], :name => "index_notifications_on_recipient_id"
add_index "notifications", ["target_id"], :name => "index_notifications_on_target_id"
add_index "notifications", ["target_type", "target_id"], :name => "index_notifications_on_target_type_and_target_id"
......@@ -460,6 +458,7 @@ ActiveRecord::Schema.define(:version => 20110130072907) do
t.string "mongo_id"
t.string "invitation_service"
t.string "invitation_identifier"
t.text "open_aspects"
end
add_index "users", ["email"], :name => "index_users_on_email"
......
@javascript
Feature: saved state
Scenario: open aspects persist
Scenario: open aspects persist across sessions
Given I am signed in
And I have an aspect called "Open 1"
And I have an aspect called "Closed 1"
And I have an aspect called "Closed 2"
And I have an aspect called "Open 2"
And I am on the aspects page
When I follow "Open 1"
And I follow "Open 2"
Then I should have aspects "Open 1", "Open 2" open
Then I should have aspect "Open 1" "selected"
Then I should have aspect "Open 2" "selected"
Then I should have aspect "Closed 1" "not selected"
Then I should have aspect "Closed 2" "not selected"
And I click on my name in the header
And I follow "logout"
And I go to the new user session page
And I fill in "Username" with "ohai"
And I fill in "Password" with "secret"
Then I should be on the aspects page
Then I should have aspects "Open 1", "Open 2" open
And I am signed in
Then I should be on the aspects page
Then I should have aspect "Open 1" "selected"
But I should have aspect "Open 2" "selected"
But I should have aspect "Closed 1" "not selected"
But I should have aspect "Closed 2" "not selected"
......@@ -71,3 +71,17 @@ end
When /^I click on the contact request$/ do
find(".person.request.ui-draggable a").click
end
Then /^I should have aspect "([^"]*)" "([^"]*)"$/ do |arg1, arg2|
@aspect = Aspect.where(:name => arg1).first
val = evaluate_script("$('#aspect_nav').children('li[data-guid=#{@aspect.id}]').hasClass('selected');") #
if arg2 == "selected"
val.should == true
elsif arg2 == "not selected"
val.should == false
else
raise "Aspect state should either be 'selected' or 'not selected'"
end
end
......@@ -87,6 +87,23 @@ describe AspectsController do
get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]
assigns(:posts).length.should == 8
end
context "storing state" do
before do
@index_params = {:a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]}
end
it "stores the aspect params in the user" do
get :index, @index_params
@user.reload.open_aspects.should == @index_params[:a_ids]
end
it "correctly stores the aspect params" do
@user.open_aspects = @index_params[:a_ids]
@user.save
get :index
@user.reload.open_aspects.should == nil
end
end
end
context 'performance' do
......@@ -319,6 +336,7 @@ describe AspectsController do
describe "#hashes_for_posts" do
it 'returns only distinct people' do
pending
end
end
end
......@@ -23,7 +23,18 @@ describe HomeController do
it 'redirects to aspects index if user is logged in' do
sign_in @user
get :show
response.should redirect_to aspects_path
response.should redirect_to( :controller => 'aspects', :action => 'index')
end
it 'redirects to aspects index with stored aspects' do
sign_in @user
@aspect0 = @user.aspects.all[0]
@aspect1 = @user.aspects.create(:name => "Yeaaaah!")
@index_params = {:a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]}
@user.open_aspects = @index_params[:a_ids]
@user.save
get :show
response.should redirect_to( :controller => 'aspects', :action => 'index', :a_ids => @index_params[:a_ids] )
end
end
......
......@@ -30,7 +30,7 @@ describe StatusMessagesController do
end
it 'succeeds' do
get :show, "id" => message.id.to_s
get :show, "id" => @message.id.to_s
response.should be_success
end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment