woopy 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,5 +1,8 @@
1
1
  module Woopy
2
2
  class Employment < Resource
3
-
3
+ def initialize(attributes = {}, persisted = false)
4
+ self.class.site = Resource.site + "accounts/:account_id/"
5
+ super(attributes, persisted)
6
+ end
4
7
  end
5
8
  end
data/lib/woopy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Woopy
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
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
@@ -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 = Woopy::User.create(user_attributes)
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
- end
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
@@ -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.1.8
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-13 00:00:00.000000000 Z
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: &70365702195860 !ruby/object:Gem::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: *70365702195860
24
+ version_requirements: *70137251115060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70365702195320 !ruby/object:Gem::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: *70365702195320
35
+ version_requirements: *70137251114540
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70365702194880 !ruby/object:Gem::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: *70365702194880
46
+ version_requirements: *70137251114120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: gem-release
49
- requirement: &70365702194420 !ruby/object:Gem::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: *70365702194420
57
+ version_requirements: *70137251113660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activeresource
60
- requirement: &70365702193920 !ruby/object:Gem::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: *70365702193920
68
+ version_requirements: *70137251113160
69
69
  description: Wraps the Woople API as ActiveResources
70
70
  email:
71
71
  - developers@bigbangtechnology.com