saucy 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +8 -0
- data/Gemfile.lock +106 -0
- data/README +9 -0
- data/app/controllers/accounts_controller.rb +57 -0
- data/app/controllers/invitations_controller.rb +36 -0
- data/app/controllers/memberships_controller.rb +9 -0
- data/app/controllers/permissions_controller.rb +17 -0
- data/app/controllers/plans_controller.rb +7 -0
- data/app/controllers/profiles_controller.rb +17 -0
- data/app/controllers/projects_controller.rb +56 -0
- data/app/models/account_membership.rb +8 -0
- data/app/models/invitation.rb +86 -0
- data/app/models/project_membership.rb +16 -0
- data/app/models/signup.rb +134 -0
- data/app/views/accounts/_account.html.erb +12 -0
- data/app/views/accounts/_blank_slate.html.erb +6 -0
- data/app/views/accounts/_projects.html.erb +12 -0
- data/app/views/accounts/_tab_bar.html.erb +8 -0
- data/app/views/accounts/edit.html.erb +17 -0
- data/app/views/accounts/index.html.erb +3 -0
- data/app/views/accounts/new.html.erb +26 -0
- data/app/views/invitation_mailer/invitation.text.erb +6 -0
- data/app/views/invitations/new.html.erb +11 -0
- data/app/views/invitations/show.html.erb +20 -0
- data/app/views/memberships/index.html.erb +16 -0
- data/app/views/permissions/edit.html.erb +15 -0
- data/app/views/plans/index.html.erb +3 -0
- data/app/views/profiles/_inputs.html.erb +6 -0
- data/app/views/profiles/edit.html.erb +35 -0
- data/app/views/projects/_form.html.erb +4 -0
- data/app/views/projects/edit.html.erb +18 -0
- data/app/views/projects/index.html.erb +13 -0
- data/app/views/projects/new.html.erb +11 -0
- data/config/routes.rb +18 -0
- data/features/run_features.feature +73 -0
- data/features/step_definitions/clearance_steps.rb +45 -0
- data/features/step_definitions/rails_steps.rb +70 -0
- data/features/support/env.rb +4 -0
- data/features/support/file.rb +11 -0
- data/lib/generators/saucy/base.rb +18 -0
- data/lib/generators/saucy/features/features_generator.rb +68 -0
- data/lib/generators/saucy/features/templates/factories.rb +55 -0
- data/lib/generators/saucy/features/templates/step_definitions/email_steps.rb +13 -0
- data/lib/generators/saucy/features/templates/step_definitions/factory_girl_steps.rb +1 -0
- data/lib/generators/saucy/features/templates/step_definitions/html_steps.rb +3 -0
- data/lib/generators/saucy/features/templates/step_definitions/project_steps.rb +4 -0
- data/lib/generators/saucy/features/templates/step_definitions/session_steps.rb +27 -0
- data/lib/generators/saucy/features/templates/step_definitions/user_steps.rb +54 -0
- data/lib/generators/saucy/install/install_generator.rb +36 -0
- data/lib/generators/saucy/install/templates/create_saucy_tables.rb +72 -0
- data/lib/generators/saucy/install/templates/models/account.rb +3 -0
- data/lib/generators/saucy/install/templates/models/invitation_mailer.rb +9 -0
- data/lib/generators/saucy/install/templates/models/plan.rb +3 -0
- data/lib/generators/saucy/install/templates/models/project.rb +3 -0
- data/lib/generators/saucy/views/views_generator.rb +23 -0
- data/lib/saucy.rb +7 -0
- data/lib/saucy/account.rb +50 -0
- data/lib/saucy/account_authorization.rb +34 -0
- data/lib/saucy/configuration.rb +12 -0
- data/lib/saucy/engine.rb +9 -0
- data/lib/saucy/layouts.rb +36 -0
- data/lib/saucy/plan.rb +11 -0
- data/lib/saucy/project.rb +39 -0
- data/lib/saucy/user.rb +37 -0
- data/spec/controllers/accounts_controller_spec.rb +204 -0
- data/spec/controllers/application_controller_spec.rb +27 -0
- data/spec/controllers/invitations_controller_spec.rb +155 -0
- data/spec/controllers/memberships_controller_spec.rb +33 -0
- data/spec/controllers/permissions_controller_spec.rb +69 -0
- data/spec/controllers/profiles_controller_spec.rb +43 -0
- data/spec/controllers/projects_controller_spec.rb +123 -0
- data/spec/layouts_spec.rb +21 -0
- data/spec/models/account_membership_spec.rb +13 -0
- data/spec/models/account_spec.rb +61 -0
- data/spec/models/invitation_spec.rb +160 -0
- data/spec/models/project_membership_spec.rb +26 -0
- data/spec/models/project_spec.rb +80 -0
- data/spec/models/signup_spec.rb +175 -0
- data/spec/models/user_spec.rb +96 -0
- data/spec/saucy_spec.rb +7 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/support/authentication_helpers.rb +71 -0
- data/spec/support/authorization_helpers.rb +56 -0
- data/spec/support/clearance_matchers.rb +55 -0
- data/spec/views/accounts/_account.html.erb_spec.rb +66 -0
- metadata +203 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe User, "valid" do
|
4
|
+
subject { Factory(:user) }
|
5
|
+
|
6
|
+
it { should validate_presence_of(:name) }
|
7
|
+
|
8
|
+
it { should have_many(:account_memberships) }
|
9
|
+
it { should have_many(:accounts).through(:account_memberships) }
|
10
|
+
it { should have_many(:projects) }
|
11
|
+
it { should have_many(:project_memberships) }
|
12
|
+
|
13
|
+
it "is an admin of an account with an admin membership" do
|
14
|
+
account = Factory(:account)
|
15
|
+
Factory(:account_membership, :user => subject, :admin => true, :account => account)
|
16
|
+
subject.should be_admin_of(account)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "isn't an admin of an account with a non admin membership" do
|
20
|
+
account = Factory(:account)
|
21
|
+
Factory(:account_membership, :user => subject, :admin => false, :account => account)
|
22
|
+
subject.should_not be_admin_of(account)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "isn't an admin of an account without a membership" do
|
26
|
+
account = Factory(:account)
|
27
|
+
subject.should_not be_admin_of(account)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "is a member with a membership for the given account" do
|
31
|
+
account = Factory(:account)
|
32
|
+
Factory(:account_membership, :user => subject, :account => account)
|
33
|
+
subject.should be_member_of(account)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "isn't a member without a membership for the given account" do
|
37
|
+
account = Factory(:account)
|
38
|
+
other_account = Factory(:account)
|
39
|
+
Factory(:account_membership, :user => subject, :account => other_account)
|
40
|
+
subject.should_not be_member_of(account)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "is a member with a membership for the given project" do
|
44
|
+
project = Factory(:project)
|
45
|
+
Factory(:account_membership, :user => subject, :account => project.account)
|
46
|
+
Factory(:project_membership, :user => subject, :project => project)
|
47
|
+
subject.should be_member_of(project)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "isn't a member without a membership for the given project" do
|
51
|
+
project = Factory(:project)
|
52
|
+
other_project = Factory(:project)
|
53
|
+
Factory(:account_membership, :user => subject, :account => other_project.account)
|
54
|
+
Factory(:project_membership, :user => subject, :project => other_project)
|
55
|
+
subject.should_not be_member_of(project)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns users by name" do
|
59
|
+
Factory(:user, :name => "def")
|
60
|
+
Factory(:user, :name => "abc")
|
61
|
+
Factory(:user, :name => "ghi")
|
62
|
+
|
63
|
+
User.by_name.map(&:name).should == %w(abc def ghi)
|
64
|
+
end
|
65
|
+
|
66
|
+
context "updating the permissions for an account" do
|
67
|
+
let!(:account) { Factory(:account) }
|
68
|
+
let!(:other_account) { Factory(:account) }
|
69
|
+
let!(:member_project) { Factory(:project, :account => account) }
|
70
|
+
let!(:nonmember_project) { Factory(:project, :account => account) }
|
71
|
+
let!(:other_account_project) { Factory(:project, :account => other_account) }
|
72
|
+
|
73
|
+
before do
|
74
|
+
Factory(:account_membership, :account => account, :user => subject)
|
75
|
+
Factory(:account_membership, :account => other_account, :user => subject)
|
76
|
+
Factory(:project_membership, :project => member_project, :user => subject)
|
77
|
+
Factory(:project_membership, :project => other_account_project, :user => subject)
|
78
|
+
subject.reload
|
79
|
+
|
80
|
+
subject.update_permissions_for(account, [nonmember_project.id])
|
81
|
+
end
|
82
|
+
|
83
|
+
it "adds an added project for that account" do
|
84
|
+
subject.should be_member_of(nonmember_project)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "removes a removed project for that account" do
|
88
|
+
subject.should_not be_member_of(member_project)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "ignores a project for another account" do
|
92
|
+
subject.should be_member_of(other_account_project)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
data/spec/saucy_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
3
|
+
require File.expand_path("../../config/environment", __FILE__)
|
4
|
+
require 'rspec/rails'
|
5
|
+
|
6
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
7
|
+
# in spec/support/ and its subdirectories.
|
8
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
# == Mock Framework
|
12
|
+
#
|
13
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
14
|
+
#
|
15
|
+
# config.mock_with :mocha
|
16
|
+
# config.mock_with :flexmock
|
17
|
+
# config.mock_with :rr
|
18
|
+
config.mock_with :mocha
|
19
|
+
|
20
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
21
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
22
|
+
|
23
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
24
|
+
# examples within a transaction, remove the following line or assign false
|
25
|
+
# instead of true.
|
26
|
+
config.use_transactional_fixtures = true
|
27
|
+
|
28
|
+
config.backtrace_clean_patterns << %r{gems/}
|
29
|
+
|
30
|
+
config.include AuthenticationHelpers
|
31
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module AuthenticationHelpers
|
2
|
+
def sign_in_as(user)
|
3
|
+
controller.current_user = user
|
4
|
+
end
|
5
|
+
|
6
|
+
def sign_in
|
7
|
+
sign_in_as(Factory(:user))
|
8
|
+
end
|
9
|
+
|
10
|
+
def sign_out
|
11
|
+
controller.current_user = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def current_user
|
15
|
+
controller.current_user
|
16
|
+
end
|
17
|
+
|
18
|
+
def signed_in?
|
19
|
+
controller.signed_in?
|
20
|
+
end
|
21
|
+
|
22
|
+
def sign_in_as_admin_of_account(account)
|
23
|
+
user = Factory(:user)
|
24
|
+
Factory(:account_membership, :user => user, :account => account, :admin => true)
|
25
|
+
sign_in_as user
|
26
|
+
end
|
27
|
+
|
28
|
+
def sign_in_as_non_admin_of_account(account)
|
29
|
+
user = Factory(:user)
|
30
|
+
Factory(:account_membership, :user => user, :account => account, :admin => false)
|
31
|
+
sign_in_as user
|
32
|
+
end
|
33
|
+
|
34
|
+
def sign_in_as_non_admin_of_project(project)
|
35
|
+
user = sign_in_as_non_admin_of_account(project.account)
|
36
|
+
Factory(:project_membership, :user => user, :project => project)
|
37
|
+
end
|
38
|
+
|
39
|
+
def sign_in_as_admin_of_project(project)
|
40
|
+
user = sign_in_as_admin_of_account(project.account)
|
41
|
+
Factory(:project_membership, :user => user, :project => project)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
RSpec::Matchers.define :be_signed_in do
|
46
|
+
match do |controller|
|
47
|
+
@controller = controller
|
48
|
+
@controller.signed_in? &&
|
49
|
+
(@expected_user.nil? || @expected_user == @controller.current_user)
|
50
|
+
end
|
51
|
+
|
52
|
+
chain :as do |user|
|
53
|
+
@expected_user = user
|
54
|
+
end
|
55
|
+
|
56
|
+
failure_message_for_should do
|
57
|
+
message = "expected to be signed in"
|
58
|
+
message << " as #{@expected_user.inspect}" if @expected_user
|
59
|
+
message << " but was "
|
60
|
+
if @controller.signed_in?
|
61
|
+
message << "signed in as #{@controller.current_user.inspect}"
|
62
|
+
else
|
63
|
+
message << "not signed in"
|
64
|
+
end
|
65
|
+
message
|
66
|
+
end
|
67
|
+
|
68
|
+
failure_message_for_should_not do
|
69
|
+
"didn't expect to be signed in"
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module AuthorizationHelpers
|
2
|
+
module AccountAdminExampleGroup
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
included do
|
5
|
+
let(:account) { Factory(:account) }
|
6
|
+
before { sign_in_as_admin_of_account(account) }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module AccountMemberExampleGroup
|
11
|
+
extend ActiveSupport::Concern
|
12
|
+
included do
|
13
|
+
let(:account) { Factory(:account) }
|
14
|
+
before { sign_in_as_non_admin_of_account(account) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module ProjectAdminExampleGroup
|
19
|
+
extend ActiveSupport::Concern
|
20
|
+
included do
|
21
|
+
let(:account) { Factory(:account) }
|
22
|
+
let(:project) { Factory(:project, :account => account) }
|
23
|
+
before { sign_in_as_admin_of_project(project) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module ProjectMemberExampleGroup
|
28
|
+
extend ActiveSupport::Concern
|
29
|
+
included do
|
30
|
+
let(:account) { Factory(:account) }
|
31
|
+
let(:project) { Factory(:project, :account => account) }
|
32
|
+
before { sign_in_as_non_admin_of_project(project) }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module UserExampleGroup
|
37
|
+
extend ActiveSupport::Concern
|
38
|
+
included do
|
39
|
+
let(:user) { Factory(:email_confirmed_user) }
|
40
|
+
before { sign_in_as(user) }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
RSpec.configure do |config|
|
46
|
+
config.include AuthorizationHelpers::AccountAdminExampleGroup,
|
47
|
+
:as => :account_admin
|
48
|
+
config.include AuthorizationHelpers::AccountMemberExampleGroup,
|
49
|
+
:as => :account_member
|
50
|
+
config.include AuthorizationHelpers::ProjectAdminExampleGroup,
|
51
|
+
:as => :project_admin
|
52
|
+
config.include AuthorizationHelpers::ProjectMemberExampleGroup,
|
53
|
+
:as => :project_member
|
54
|
+
config.include AuthorizationHelpers::UserExampleGroup,
|
55
|
+
:as => :user
|
56
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module ClearanceMatchers
|
2
|
+
class DenyAccessMatcher
|
3
|
+
include Shoulda::ActionController::Matchers
|
4
|
+
|
5
|
+
def initialize(context)
|
6
|
+
@context = context
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(controller)
|
10
|
+
if @method
|
11
|
+
@context.__send__(@method, *@args)
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
if @flash
|
16
|
+
controller.should set_the_flash.to(@flash)
|
17
|
+
else
|
18
|
+
controller.should_not set_the_flash
|
19
|
+
end
|
20
|
+
|
21
|
+
url = controller.__send__(:sign_in_url)
|
22
|
+
controller.should redirect_to(url).in_context(@context)
|
23
|
+
|
24
|
+
true
|
25
|
+
rescue RSpec::Expectations::ExpectationNotMetError => failure
|
26
|
+
@failure_message = failure.message
|
27
|
+
false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def flash(flash)
|
32
|
+
@flash = flash
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
def on(method, *args)
|
37
|
+
@method = method
|
38
|
+
@args = args
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
def failure_message_for_should
|
43
|
+
@failure_message
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def deny_access
|
48
|
+
DenyAccessMatcher.new(self)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
RSpec.configure do |config|
|
54
|
+
config.include ClearanceMatchers
|
55
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "/accounts/_account.html.erb" do
|
4
|
+
let(:account) { Factory.stub(:account) }
|
5
|
+
let(:edit_link) { %{href="#{edit_account_path(account)}"} }
|
6
|
+
let(:user) { Factory.stub(:user) }
|
7
|
+
|
8
|
+
before { view.stubs(:current_user => user) }
|
9
|
+
|
10
|
+
def render_account
|
11
|
+
render :partial => "accounts/account", :locals => { :account => account }
|
12
|
+
end
|
13
|
+
|
14
|
+
context "admin" do
|
15
|
+
before do
|
16
|
+
user.stubs(:admin_of? => true)
|
17
|
+
render_account
|
18
|
+
end
|
19
|
+
|
20
|
+
it "links to edit the account" do
|
21
|
+
rendered.should include(edit_link)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "non admin" do
|
26
|
+
before do
|
27
|
+
user.stubs(:admin_of? => false)
|
28
|
+
render_account
|
29
|
+
end
|
30
|
+
|
31
|
+
it "links to edit the account" do
|
32
|
+
rendered.should_not include(edit_link)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with projects" do
|
37
|
+
let(:project) { Factory.stub(:project, :name => 'Test Project') }
|
38
|
+
before do
|
39
|
+
account.stubs(:projects_visible_to => [project])
|
40
|
+
render_account
|
41
|
+
end
|
42
|
+
|
43
|
+
it "finds visible projects" do
|
44
|
+
account.should have_received(:projects_visible_to).with(user)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "renders projects" do
|
48
|
+
rendered.should include(project.name)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "doesn't render the blank slate" do
|
52
|
+
rendered.should_not include("blank_slate")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "without projects" do
|
57
|
+
before do
|
58
|
+
account.stubs(:projects_visible_to => [])
|
59
|
+
render_account
|
60
|
+
end
|
61
|
+
|
62
|
+
it "renders the blank slate" do
|
63
|
+
rendered.should include("blank_slate")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: saucy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- thoughtbot, inc.
|
14
|
+
- Joe Ferris
|
15
|
+
- Mike Burns
|
16
|
+
autorequire:
|
17
|
+
bindir: bin
|
18
|
+
cert_chain: []
|
19
|
+
|
20
|
+
date: 2010-12-07 00:00:00 -05:00
|
21
|
+
default_executable:
|
22
|
+
dependencies:
|
23
|
+
- !ruby/object:Gem::Dependency
|
24
|
+
name: formtastic
|
25
|
+
prerelease: false
|
26
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
hash: 11
|
32
|
+
segments:
|
33
|
+
- 1
|
34
|
+
- 2
|
35
|
+
version: "1.2"
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: railties
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 1
|
47
|
+
segments:
|
48
|
+
- 3
|
49
|
+
- 0
|
50
|
+
- 3
|
51
|
+
version: 3.0.3
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: aruba
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - "="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 27
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
- 2
|
66
|
+
- 6
|
67
|
+
version: 0.2.6
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id003
|
70
|
+
description: BLAH BLAH BLAH
|
71
|
+
email: support@thoughtbot.com
|
72
|
+
executables: []
|
73
|
+
|
74
|
+
extensions: []
|
75
|
+
|
76
|
+
extra_rdoc_files: []
|
77
|
+
|
78
|
+
files:
|
79
|
+
- Gemfile.lock
|
80
|
+
- README
|
81
|
+
- Gemfile
|
82
|
+
- config/routes.rb
|
83
|
+
- app/views/invitations/new.html.erb
|
84
|
+
- app/views/invitations/show.html.erb
|
85
|
+
- app/views/accounts/new.html.erb
|
86
|
+
- app/views/accounts/_projects.html.erb
|
87
|
+
- app/views/accounts/edit.html.erb
|
88
|
+
- app/views/accounts/_tab_bar.html.erb
|
89
|
+
- app/views/accounts/_blank_slate.html.erb
|
90
|
+
- app/views/accounts/_account.html.erb
|
91
|
+
- app/views/accounts/index.html.erb
|
92
|
+
- app/views/invitation_mailer/invitation.text.erb
|
93
|
+
- app/views/plans/index.html.erb
|
94
|
+
- app/views/memberships/index.html.erb
|
95
|
+
- app/views/profiles/edit.html.erb
|
96
|
+
- app/views/profiles/_inputs.html.erb
|
97
|
+
- app/views/projects/new.html.erb
|
98
|
+
- app/views/projects/edit.html.erb
|
99
|
+
- app/views/projects/index.html.erb
|
100
|
+
- app/views/projects/_form.html.erb
|
101
|
+
- app/views/permissions/edit.html.erb
|
102
|
+
- app/controllers/profiles_controller.rb
|
103
|
+
- app/controllers/accounts_controller.rb
|
104
|
+
- app/controllers/memberships_controller.rb
|
105
|
+
- app/controllers/plans_controller.rb
|
106
|
+
- app/controllers/projects_controller.rb
|
107
|
+
- app/controllers/invitations_controller.rb
|
108
|
+
- app/controllers/permissions_controller.rb
|
109
|
+
- app/models/project_membership.rb
|
110
|
+
- app/models/invitation.rb
|
111
|
+
- app/models/signup.rb
|
112
|
+
- app/models/account_membership.rb
|
113
|
+
- lib/generators/saucy/views/views_generator.rb
|
114
|
+
- lib/generators/saucy/base.rb
|
115
|
+
- lib/generators/saucy/install/install_generator.rb
|
116
|
+
- lib/generators/saucy/install/templates/create_saucy_tables.rb
|
117
|
+
- lib/generators/saucy/install/templates/models/project.rb
|
118
|
+
- lib/generators/saucy/install/templates/models/plan.rb
|
119
|
+
- lib/generators/saucy/install/templates/models/account.rb
|
120
|
+
- lib/generators/saucy/install/templates/models/invitation_mailer.rb
|
121
|
+
- lib/generators/saucy/features/features_generator.rb
|
122
|
+
- lib/generators/saucy/features/templates/factories.rb
|
123
|
+
- lib/generators/saucy/features/templates/step_definitions/factory_girl_steps.rb
|
124
|
+
- lib/generators/saucy/features/templates/step_definitions/html_steps.rb
|
125
|
+
- lib/generators/saucy/features/templates/step_definitions/session_steps.rb
|
126
|
+
- lib/generators/saucy/features/templates/step_definitions/project_steps.rb
|
127
|
+
- lib/generators/saucy/features/templates/step_definitions/email_steps.rb
|
128
|
+
- lib/generators/saucy/features/templates/step_definitions/user_steps.rb
|
129
|
+
- lib/saucy.rb
|
130
|
+
- lib/saucy/layouts.rb
|
131
|
+
- lib/saucy/account_authorization.rb
|
132
|
+
- lib/saucy/configuration.rb
|
133
|
+
- lib/saucy/engine.rb
|
134
|
+
- lib/saucy/project.rb
|
135
|
+
- lib/saucy/plan.rb
|
136
|
+
- lib/saucy/account.rb
|
137
|
+
- lib/saucy/user.rb
|
138
|
+
- features/run_features.feature
|
139
|
+
- features/support/file.rb
|
140
|
+
- features/support/env.rb
|
141
|
+
- features/step_definitions/rails_steps.rb
|
142
|
+
- features/step_definitions/clearance_steps.rb
|
143
|
+
- spec/views/accounts/_account.html.erb_spec.rb
|
144
|
+
- spec/controllers/application_controller_spec.rb
|
145
|
+
- spec/controllers/invitations_controller_spec.rb
|
146
|
+
- spec/controllers/accounts_controller_spec.rb
|
147
|
+
- spec/controllers/memberships_controller_spec.rb
|
148
|
+
- spec/controllers/permissions_controller_spec.rb
|
149
|
+
- spec/controllers/profiles_controller_spec.rb
|
150
|
+
- spec/controllers/projects_controller_spec.rb
|
151
|
+
- spec/layouts_spec.rb
|
152
|
+
- spec/saucy_spec.rb
|
153
|
+
- spec/support/clearance_matchers.rb
|
154
|
+
- spec/support/authorization_helpers.rb
|
155
|
+
- spec/support/authentication_helpers.rb
|
156
|
+
- spec/models/user_spec.rb
|
157
|
+
- spec/models/signup_spec.rb
|
158
|
+
- spec/models/project_spec.rb
|
159
|
+
- spec/models/project_membership_spec.rb
|
160
|
+
- spec/models/invitation_spec.rb
|
161
|
+
- spec/models/account_spec.rb
|
162
|
+
- spec/models/account_membership_spec.rb
|
163
|
+
- spec/spec_helper.rb
|
164
|
+
has_rdoc: true
|
165
|
+
homepage: http://github.com/thoughtbot/saucy
|
166
|
+
licenses: []
|
167
|
+
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
|
171
|
+
require_paths:
|
172
|
+
- lib
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
hash: 3
|
179
|
+
segments:
|
180
|
+
- 0
|
181
|
+
version: "0"
|
182
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
hash: 3
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
version: "0"
|
191
|
+
requirements: []
|
192
|
+
|
193
|
+
rubyforge_project:
|
194
|
+
rubygems_version: 1.3.7
|
195
|
+
signing_key:
|
196
|
+
specification_version: 3
|
197
|
+
summary: blah blah blah
|
198
|
+
test_files:
|
199
|
+
- features/run_features.feature
|
200
|
+
- features/support/file.rb
|
201
|
+
- features/support/env.rb
|
202
|
+
- features/step_definitions/rails_steps.rb
|
203
|
+
- features/step_definitions/clearance_steps.rb
|