salesflip-jobboersen_integration 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,8 +3,8 @@ module ContactExtras
3
3
  base.class_eval do
4
4
  field :tjb_id
5
5
 
6
- after_create :create_in_tjb
7
- after_update :update_in_tjb, :unless => :do_not_update
6
+ after_create :create_in_tjb, :if => :has_account?
7
+ after_update :update_in_tjb, :unless => :do_not_update, :if => :has_account?
8
8
 
9
9
  attr_accessor :do_not_update
10
10
  end
@@ -47,5 +47,9 @@ module ContactExtras
47
47
  def generate_password
48
48
  Array.new(10/2) { rand(256) }.pack('C*').unpack('H*').first
49
49
  end
50
+
51
+ def has_account?
52
+ !account.blank?
53
+ end
50
54
  end
51
55
  end
@@ -19,7 +19,7 @@ module JobboersenIntegration
19
19
  Salesflip::Plugin.register(:jobboersen_integration) do
20
20
  name 'JobBoersen Integration'
21
21
  author 'Matt Beedle'
22
- version '0.2.3'
22
+ version '0.2.4'
23
23
  description 'Everything to seemlessly integrate 1000jobboersen.de'
24
24
  end
25
25
 
@@ -29,9 +29,6 @@ module JobboersenIntegration
29
29
  require 'app/lib/user_extras'
30
30
  User.send(:include, UserExtras)
31
31
 
32
- require 'app/lib/contact_extras'
33
- Contact.send(:include, ContactExtras)
34
-
35
32
  require 'app/lib/controller_hooks'
36
33
  end
37
34
  end
@@ -6,6 +6,7 @@ class Contact
6
6
  field :email
7
7
 
8
8
  referenced_in :user
9
+ referenced_in :account
9
10
 
10
11
  validates_presence_of :last_name, :user
11
12
  end
@@ -2,8 +2,14 @@ require 'test_helper'
2
2
 
3
3
  class ContactTest < ActiveSupport::TestCase
4
4
  setup do
5
+ FakeWeb.register_uri(:post,
6
+ 'http://1000jobboersen.de/administration/accounts.xml?auth_token=La9Hbm8SnPJN-F-zUhlp',
7
+ :body => File.read('test/support/account_create_success.xml'))
8
+ FakeWeb.register_uri(:post, 'http://1000jobboersen.de/administration/administrators.xml',
9
+ :body => File.read('test/support/administrator_create_success.xml'))
5
10
  Contact.send(:include, ContactExtras)
6
11
  @user = User.create :email => 'test@test.com', :tjb_auth_token => 'La9Hbm8SnPJN-F-zUhlp'
12
+ @account = Account.create :name => 'test account', :user => @user
7
13
  end
8
14
 
9
15
  should 'have tjb_id field' do
@@ -16,74 +22,112 @@ class ContactTest < ActiveSupport::TestCase
16
22
  end
17
23
 
18
24
  context 'creating a new contact (user)' do
19
- should 'only send first_name, last_name, email, password and password_confirmation in xml' do
20
- contact = Contact.new :first_name => 'Matt', :last_name => 'Beedle',
21
- :email => 'mattbeedle@googlemail.com', :password => 'berlin5000',
22
- :password_confirmation => 'berlin5000', :another_field => 'asfewaf'
23
- assert_match(/first\-name/, contact.tjb_xml)
24
- assert_match(/last\-name/, contact.tjb_xml)
25
- assert_match(/email/, contact.tjb_xml)
26
- assert_match(/password/, contact.tjb_xml)
27
- assert_match(/password\-confirmation/, contact.tjb_xml)
28
- assert_no_match(/another\-field/, contact.tjb_xml)
29
- end
25
+ context 'when the contact has an associated account' do
26
+ setup do
27
+ @contact = Contact.new :first_name => 'Matt', :last_name => 'Beedle',
28
+ :email => 'mattbeedle@googlemail.com', :password => 'berlin5000',
29
+ :password_confirmation => 'berlin5000', :another_field => 'asfewaf',
30
+ :account => @account, :user => @user
31
+ end
32
+
33
+ should 'only send first_name, last_name, email, password and password_confirmation in xml' do
34
+ assert_match(/first\-name/, @contact.tjb_xml)
35
+ assert_match(/last\-name/, @contact.tjb_xml)
36
+ assert_match(/email/, @contact.tjb_xml)
37
+ assert_match(/password/, @contact.tjb_xml)
38
+ assert_match(/password\-confirmation/, @contact.tjb_xml)
39
+ assert_no_match(/another\-field/, @contact.tjb_xml)
40
+ end
30
41
 
31
- should 'set the tjb_id when the contact has been created in 1000jobboersen' do
32
- FakeWeb.register_uri(:post,
33
- "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
34
- :body => File.read('test/support/contact_create_success.xml'))
35
- contact = Contact.create! :first_name => 'Matt', :last_name => 'Beedle',
36
- :email => 'mattbeedle@googlemail.com', :user => @user
37
- assert_equal '4b8ead6a24d8f247be001073', contact.tjb_id
38
- end
42
+ should 'set the tjb_id when the contact has been created in 1000jobboersen' do
43
+ FakeWeb.register_uri(:post,
44
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
45
+ :body => File.read('test/support/contact_create_success.xml'))
46
+ @contact.save!
47
+ assert_equal '4b8ead6a24d8f247be001073', @contact.tjb_id
48
+ end
39
49
 
40
- should 'not blow up when 1000jobboersen returns an error response' do
41
- FakeWeb.register_uri(:post,
42
- "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
43
- :status => '500')
44
- contact = Contact.create! :first_name => 'Matt', :last_name => 'Beedle',
45
- :email => 'mattbeedle@googlemail.com', :user => @user
46
- assert !contact.new_record?
50
+ should 'not blow up when 1000jobboersen returns an error response' do
51
+ FakeWeb.register_uri(:post,
52
+ "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
53
+ :status => '500')
54
+ @contact.save!
55
+ assert !@contact.new_record?
56
+ end
57
+ end
58
+
59
+ context 'when the contact does not have an associated account' do
60
+ setup do
61
+ @contact = Contact.new :first_name => 'Matt', :last_name => 'Beedle',
62
+ :email => 'mattbeedle@googlemail.com', :password => 'berlin5000',
63
+ :password_confirmation => 'berlin5000', :another_field => 'asfewaf',
64
+ :user => @user
65
+ end
66
+
67
+ should 'not attempt to create a user in 1000jb' do
68
+ FakeWeb.register_uri(:post,
69
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
70
+ :body => File.read('test/support/contact_create_success.xml'))
71
+ @contact.save!
72
+ assert @contact.tjb_id.blank?
73
+ end
47
74
  end
48
75
  end
49
76
 
50
77
  context 'updating a contact' do
78
+ setup do
79
+ @contact = Contact.new :first_name => 'Matt', :last_name => 'Beedle',
80
+ :email => 'mattbeedle@googlemail.com', :user => @user, :account => @account
81
+ end
82
+
51
83
  context 'when the contact exists in 1000jobboersen' do
52
84
  setup do
53
85
  FakeWeb.register_uri(:post,
54
- "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
86
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
55
87
  :body => File.read('test/support/contact_create_success.xml'))
56
88
  end
57
89
 
58
90
  should 'not blow up when an error response is returned' do
59
- contact = Contact.create! :first_name => 'Matt', :last_name => 'Beedle',
60
- :email => 'mattbeedle@googlemail.com', :user => @user
91
+ @contact.save!
61
92
  FakeWeb.register_uri(:put,
62
- "http://1000jobboersen.de/administration/users/#{contact.tjb_id}.xml?auth_token=#{@user.tjb_auth_token}",
93
+ "http://1000jobboersen.de/administration/users/#{@contact.tjb_id}.xml?auth_token=#{@user.tjb_auth_token}",
63
94
  :status => '500')
64
- contact = Contact.find(contact.id)
65
- contact.update_attributes :first_name => 'test'
66
- assert contact.valid?
95
+ @contact = Contact.find(@contact.id)
96
+ @contact.update_attributes :first_name => 'test'
97
+ assert @contact.valid?
67
98
  end
68
99
  end
69
100
 
70
101
  context 'when the contact does not exist in 1000jobboersen' do
71
102
  setup do
72
103
  FakeWeb.register_uri(:post,
73
- "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
104
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
74
105
  :status => '500')
75
- @contact = Contact.create! :first_name => 'Matt', :last_name => 'Beedle',
76
- :email => 'mattbeedle@googlemail.com', :user => @user
106
+ @contact.save!
77
107
  end
78
108
 
79
109
  should 'create the contact (user) in 1000jobboersen' do
80
110
  FakeWeb.register_uri(:post,
81
- "http://1000jobboersen.de/administration/contacts.xml?auth_token=#{@user.tjb_auth_token}",
111
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
82
112
  :body => File.read('test/support/contact_create_success.xml'))
83
113
  assert @contact.tjb_id.blank?
84
114
  @contact.update_attributes :first_name => 'someone'
85
115
  assert_equal '4b8ead6a24d8f247be001073', @contact.tjb_id
86
116
  end
117
+
118
+ context 'when the contact does not have an account' do
119
+ setup do
120
+ @contact.account = nil
121
+ end
122
+
123
+ should 'not attempt to create the user in 1000jobboersen' do
124
+ FakeWeb.register_uri(:post,
125
+ "http://1000jobboersen.de/administration/users.xml?auth_token=#{@user.tjb_auth_token}",
126
+ :body => File.read('test/support/contact_create_success.xml'))
127
+ @contact.save!
128
+ assert @contact.tjb_id.blank?
129
+ end
130
+ end
87
131
  end
88
132
  end
89
133
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salesflip-jobboersen_integration
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 3
10
- version: 0.2.3
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors: []
13
13
 
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-01 00:00:00 +01:00
18
+ date: 2010-11-02 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21