woopy 0.1.8 → 0.2.0
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/lib/woopy/account.rb +11 -1
- data/lib/woopy/employment.rb +4 -1
- data/lib/woopy/version.rb +1 -1
- data/spec/spec_helper.rb +22 -1
- data/spec/woopy/account_spec.rb +28 -6
- data/spec/woopy/user_spec.rb +7 -5
- metadata +12 -12
data/lib/woopy/account.rb
CHANGED
@@ -1,13 +1,23 @@
|
|
1
1
|
module Woopy
|
2
2
|
class Account < Resource
|
3
|
-
|
4
3
|
def employ(user, role = nil)
|
5
4
|
Employment.create(account_id: self.id, user_id: user.id, role: role)
|
6
5
|
end
|
7
6
|
|
7
|
+
def unemploy(employment)
|
8
|
+
employment.destroy
|
9
|
+
end
|
10
|
+
|
8
11
|
def make_owner(user, role = nil)
|
9
12
|
Ownership.create(account_id: self.id, user_id: user.id, role: role)
|
10
13
|
end
|
11
14
|
|
15
|
+
def employments
|
16
|
+
Employment.find(:all, params: { account_id: self.id })
|
17
|
+
end
|
18
|
+
|
19
|
+
def find_employment(user)
|
20
|
+
Employment.find(:first, params: { account_id: self.id, user_id: user.id})
|
21
|
+
end
|
12
22
|
end
|
13
23
|
end
|
data/lib/woopy/employment.rb
CHANGED
data/lib/woopy/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -13,7 +13,11 @@ RSpec.configure do |config|
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def request_headers(token)
|
16
|
-
{"Content-Type" => "application/json", "X-WoopleToken" => token
|
16
|
+
{"Content-Type" => "application/json", "X-WoopleToken" => token}
|
17
|
+
end
|
18
|
+
|
19
|
+
def accept_request_headers(token)
|
20
|
+
{"Accept" => "application/json", "X-WoopleToken" => token}
|
17
21
|
end
|
18
22
|
|
19
23
|
def account_response
|
@@ -24,6 +28,23 @@ def account_attributes
|
|
24
28
|
{ name: "Account", subdomain: "subdomain1", packages: ["package1", "package2"] }
|
25
29
|
end
|
26
30
|
|
31
|
+
def user_account_employment_response
|
32
|
+
{
|
33
|
+
employments: [
|
34
|
+
{ employment: employment_attributes.merge(id: 1) }
|
35
|
+
]
|
36
|
+
}.to_json
|
37
|
+
end
|
38
|
+
|
39
|
+
def account_employments_response
|
40
|
+
{
|
41
|
+
employments: [
|
42
|
+
{ employment: employment_attributes.merge(id: 1) },
|
43
|
+
{ employment: employment_attributes.merge(id: 2, user_id: 2,) }
|
44
|
+
]
|
45
|
+
}.to_json
|
46
|
+
end
|
47
|
+
|
27
48
|
def user_response
|
28
49
|
{ user: user_attributes.merge(id: 1) }.to_json
|
29
50
|
end
|
data/spec/woopy/account_spec.rb
CHANGED
@@ -8,13 +8,16 @@ describe Woopy::Account do
|
|
8
8
|
ActiveResource::HttpMock.respond_to do |mock|
|
9
9
|
mock.post( '/services/v1/accounts.json', request_headers(@token), account_response )
|
10
10
|
mock.post( '/services/v1/users.json', request_headers(@token), user_response )
|
11
|
-
mock.post( '/services/v1/employments.json', request_headers(@token), employment_response )
|
12
11
|
mock.post( '/services/v1/ownerships.json', request_headers(@token), ownership_response )
|
12
|
+
|
13
|
+
mock.get( '/services/v1/accounts/1/employments.json', accept_request_headers(@token), account_employments_response )
|
14
|
+
mock.get( '/services/v1/accounts/1/employments.json?user_id=1', accept_request_headers(@token), user_account_employment_response )
|
15
|
+
mock.post( '/services/v1/accounts/1/employments.json', request_headers(@token), employment_response )
|
16
|
+
mock.delete( '/services/v1/accounts/1/employments/1.json', accept_request_headers(@token), employment_response )
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
16
20
|
describe "#save" do
|
17
|
-
|
18
21
|
context "valid name, subdomain, and packages" do
|
19
22
|
before do
|
20
23
|
@account = Woopy::Account.new(account_attributes)
|
@@ -23,14 +26,12 @@ describe Woopy::Account do
|
|
23
26
|
@account.save.should be_true
|
24
27
|
end
|
25
28
|
end
|
26
|
-
|
27
29
|
end
|
28
30
|
|
29
31
|
context "with an existing user" do
|
30
|
-
|
31
32
|
before do
|
32
33
|
@account = Woopy::Account.create(account_attributes)
|
33
|
-
@user
|
34
|
+
@user = Woopy::User.create(user_attributes)
|
34
35
|
end
|
35
36
|
|
36
37
|
describe "#employ" do
|
@@ -40,6 +41,16 @@ describe Woopy::Account do
|
|
40
41
|
it { should be_persisted }
|
41
42
|
end
|
42
43
|
|
44
|
+
describe "#unemploy" do
|
45
|
+
before do
|
46
|
+
@employment = @account.employ(@user)
|
47
|
+
end
|
48
|
+
|
49
|
+
subject { @account.unemploy(@employment) }
|
50
|
+
|
51
|
+
it { should be_true }
|
52
|
+
end
|
53
|
+
|
43
54
|
describe "#make_owner" do
|
44
55
|
subject { @account.make_owner(@user) }
|
45
56
|
|
@@ -47,6 +58,17 @@ describe Woopy::Account do
|
|
47
58
|
it { should be_persisted }
|
48
59
|
end
|
49
60
|
|
50
|
-
|
61
|
+
describe "#employments" do
|
62
|
+
subject { @account.employments }
|
63
|
+
|
64
|
+
its(:count) { should == 2 }
|
65
|
+
end
|
51
66
|
|
67
|
+
describe "#find_employment" do
|
68
|
+
subject { @account.find_employment(@user) }
|
69
|
+
|
70
|
+
it { should be_kind_of Woopy::Employment }
|
71
|
+
its(:user_id) { should == @user.id }
|
72
|
+
end
|
73
|
+
end
|
52
74
|
end
|
data/spec/woopy/user_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Woopy::User do
|
4
|
-
before do
|
4
|
+
before do
|
5
5
|
@token = 'foo'
|
6
6
|
Woopy(token: @token)
|
7
7
|
end
|
@@ -12,26 +12,28 @@ describe Woopy::User do
|
|
12
12
|
ActiveResource::HttpMock.respond_to do |mock|
|
13
13
|
mock.post( '/services/v1/users.json', request_headers(@token), user_response)
|
14
14
|
end
|
15
|
-
@user = Woopy::User.new(user_attributes)
|
15
|
+
@user = Woopy::User.new(user_attributes)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'saves correctly' do
|
19
19
|
@user.save.should be_true
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
context "invalid attributes" do
|
24
24
|
before do
|
25
25
|
ActiveResource::HttpMock.respond_to do |mock|
|
26
26
|
mock.post('/services/v1/users.json', request_headers(@token), { errors: ["Name can't be blank"] }.to_json, 422)
|
27
27
|
end
|
28
|
-
@user = Woopy::User.new(user_attributes)
|
28
|
+
@user = Woopy::User.new(user_attributes)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should not save, with errors" do
|
32
32
|
@user.save.should be_false
|
33
33
|
@user.errors.full_messages.should include("Name can't be blank")
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
37
38
|
end
|
39
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: woopy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70137251115060 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70137251115060
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70137251114540 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '2.8'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70137251114540
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &70137251114120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70137251114120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: gem-release
|
49
|
-
requirement: &
|
49
|
+
requirement: &70137251113660 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70137251113660
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activeresource
|
60
|
-
requirement: &
|
60
|
+
requirement: &70137251113160 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '3.1'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70137251113160
|
69
69
|
description: Wraps the Woople API as ActiveResources
|
70
70
|
email:
|
71
71
|
- developers@bigbangtechnology.com
|