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 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