persists open aspects across logins also fixed the status message controller spec broken in master
This commit is contained in:
parent
a68bdd6118
commit
789ff679a9
10 changed files with 79 additions and 12 deletions
|
|
@ -15,6 +15,8 @@ class AspectsController < ApplicationController
|
||||||
else
|
else
|
||||||
@aspects = current_user.aspects.includes(:contacts => {:person => :profile})
|
@aspects = current_user.aspects.includes(:contacts => {:person => :profile})
|
||||||
end
|
end
|
||||||
|
current_user.open_aspects = params[:a_ids]
|
||||||
|
current_user.save
|
||||||
|
|
||||||
# redirect to signup
|
# redirect to signup
|
||||||
if current_user.getting_started == true || @aspects.blank?
|
if current_user.getting_started == true || @aspects.blank?
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ class HomeController < ApplicationController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
if current_user
|
if current_user
|
||||||
redirect_to aspects_path
|
redirect_to :controller => 'aspects', :action => 'index', :a_ids => current_user.open_aspects
|
||||||
elsif is_mobile_device?
|
elsif is_mobile_device?
|
||||||
redirect_to user_session_path
|
redirect_to user_session_path
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ class User < ActiveRecord::Base
|
||||||
has_many :contact_people, :through => :contacts
|
has_many :contact_people, :through => :contacts
|
||||||
has_many :services
|
has_many :services
|
||||||
|
|
||||||
|
serialize :open_aspects, Array
|
||||||
|
|
||||||
|
|
||||||
before_destroy :disconnect_everyone, :remove_person
|
before_destroy :disconnect_everyone, :remove_person
|
||||||
before_save do
|
before_save do
|
||||||
person.save if person
|
person.save if person
|
||||||
|
|
|
||||||
9
db/migrate/20110201013408_add_open_aspects_to_user.rb
Normal file
9
db/migrate/20110201013408_add_open_aspects_to_user.rb
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
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.
|
# 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|
|
create_table "aspect_memberships", :force => true do |t|
|
||||||
t.integer "aspect_id", :null => false
|
t.integer "aspect_id", :null => false
|
||||||
|
|
@ -312,10 +312,8 @@ ActiveRecord::Schema.define(:version => 20110130072907) do
|
||||||
t.boolean "unread", :default => true, :null => false
|
t.boolean "unread", :default => true, :null => false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "mongo_id"
|
|
||||||
end
|
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", ["recipient_id"], :name => "index_notifications_on_recipient_id"
|
||||||
add_index "notifications", ["target_id"], :name => "index_notifications_on_target_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"
|
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 "mongo_id"
|
||||||
t.string "invitation_service"
|
t.string "invitation_service"
|
||||||
t.string "invitation_identifier"
|
t.string "invitation_identifier"
|
||||||
|
t.text "open_aspects"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "users", ["email"], :name => "index_users_on_email"
|
add_index "users", ["email"], :name => "index_users_on_email"
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,29 @@
|
||||||
@javascript
|
@javascript
|
||||||
Feature: saved state
|
Feature: saved state
|
||||||
Scenario: open aspects persist
|
Scenario: open aspects persist across sessions
|
||||||
Given I am signed in
|
Given I am signed in
|
||||||
And I have an aspect called "Open 1"
|
And I have an aspect called "Open 1"
|
||||||
And I have an aspect called "Closed 1"
|
And I have an aspect called "Closed 1"
|
||||||
And I have an aspect called "Closed 2"
|
And I have an aspect called "Closed 2"
|
||||||
And I have an aspect called "Open 2"
|
And I have an aspect called "Open 2"
|
||||||
|
And I am on the aspects page
|
||||||
When I follow "Open 1"
|
When I follow "Open 1"
|
||||||
And I follow "Open 2"
|
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 follow "logout"
|
||||||
|
|
||||||
And I fill in "Username" with "ohai"
|
And I go to the new user session page
|
||||||
And I fill in "Password" with "secret"
|
|
||||||
Then I should be on the aspects page
|
And I am signed in
|
||||||
Then I should have aspects "Open 1", "Open 2" open
|
|
||||||
|
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
|
When /^I click on the contact request$/ do
|
||||||
find(".person.request.ui-draggable a").click
|
find(".person.request.ui-draggable a").click
|
||||||
end
|
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]
|
get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]
|
||||||
assigns(:posts).length.should == 8
|
assigns(:posts).length.should == 8
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context 'performance' do
|
context 'performance' do
|
||||||
|
|
@ -319,6 +336,7 @@ describe AspectsController do
|
||||||
|
|
||||||
describe "#hashes_for_posts" do
|
describe "#hashes_for_posts" do
|
||||||
it 'returns only distinct people' do
|
it 'returns only distinct people' do
|
||||||
|
pending
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,18 @@ describe HomeController do
|
||||||
it 'redirects to aspects index if user is logged in' do
|
it 'redirects to aspects index if user is logged in' do
|
||||||
sign_in @user
|
sign_in @user
|
||||||
get :show
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ describe StatusMessagesController do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'succeeds' do
|
it 'succeeds' do
|
||||||
get :show, "id" => message.id.to_s
|
get :show, "id" => @message.id.to_s
|
||||||
response.should be_success
|
response.should be_success
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue