email_vision 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/Readme.md CHANGED
@@ -19,7 +19,26 @@ Usage
19
19
  emv.rejoin 'me@host.com'
20
20
 
21
21
  # create, create_or_update, update, change_email return a job-id
22
- emv.job_status job_id
22
+ # it can be used to wait for the job or fetch its status
23
+ job_id = emv.update :email => 'me@host.com', :foo => 1
24
+ puts "Status is #{emv.job_status job_id}"
25
+ emv.wait_for_job_to_finish job_id # raises when job failed
26
+
27
+
28
+ # :dateunjoin cannot be set via update, use a separate rejoin / unjoin request
29
+ class User < ActiveRecord::Base
30
+ after_save :update_email_vision
31
+
32
+ def update_email_vision
33
+ case receive_newsletter_change
34
+ when [false, true]
35
+ emv.rejoin(email)
36
+ emv.update(...data for emailv vision...)
37
+ when [true, false]
38
+ emv.unjoin(email)
39
+ end
40
+ end
41
+ end
23
42
 
24
43
  Docs
25
44
  ====
@@ -29,4 +48,4 @@ Author
29
48
  ======
30
49
  [Michael Grosser](http://grosser.it)<br/>
31
50
  michael@grosser.it<br/>
32
- Hereby placed under public domain, do what you want, just do not hold me accountable...
51
+ Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{email_vision}
8
- s.version = "0.2.4"
8
+ s.version = "0.2.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Grosser"]
12
- s.date = %q{2011-02-17}
12
+ s.date = %q{2011-06-09}
13
13
  s.email = %q{michael@grosser.it}
14
14
  s.files = [
15
15
  "Gemfile",
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  ]
25
25
  s.homepage = %q{http://github.com/grosser/email_vision}
26
26
  s.require_paths = ["lib"]
27
- s.rubygems_version = %q{1.4.2}
27
+ s.rubygems_version = %q{1.6.2}
28
28
  s.summary = %q{Ruby SOAP Api Client for EmailVision / CampaignCommander}
29
29
  s.test_files = [
30
30
  "spec/email_vision_spec.rb"
@@ -17,6 +17,7 @@ class EmailVision
17
17
 
18
18
  def find(email_or_id)
19
19
  result = execute_by_email_or_id(:get_member, email_or_id)
20
+ result = result.first if result.is_a?(Array) # may return multiple users if they have the same email -> return first
20
21
  return unless result.is_a?(Hash)
21
22
  result = convert_to_hash(result[:attributes][:entry], :key, :value)
22
23
  result.reject{|k,v| v.nil? }
@@ -157,4 +158,4 @@ class EmailVision
157
158
  def api_namespaced(method)
158
159
  "api:#{method.to_s.gsub(/_./){|x| x.slice(1,1).upcase }}"
159
160
  end
160
- end
161
+ end
@@ -31,6 +31,10 @@ describe "EmailVision" do
31
31
  email.should == changeable_user[:email]
32
32
  end
33
33
 
34
+ def steady_fields(hash)
35
+ hash.reject{|k,v| [:datejoin, :dateunjoin, :custom26].include?(k) }
36
+ end
37
+
34
38
  let(:config){YAML.load(File.read('spec/account.yml'))}
35
39
  let(:client){EmailVision.new(config)}
36
40
  let(:findable_user) do
@@ -60,12 +64,18 @@ describe "EmailVision" do
60
64
  describe :find do
61
65
  it "can find by email" do
62
66
  response = client.find(findable_user[:email])
63
- response.should == findable_user
67
+ steady_fields(response).should == steady_fields(findable_user)
64
68
  end
65
69
 
66
70
  it "can find by id" do
67
71
  response = client.find(findable_user[:member_id])
68
- response.should == findable_user
72
+ steady_fields(response).should == steady_fields(findable_user)
73
+ end
74
+
75
+ it "can find first users of multiple that have the same email" do
76
+ client.should_receive(:execute_by_email_or_id).and_return [{:attributes=>{:entry=>[{:key=>"xx",:value=>'yyy'}]}},{:attributes=>{:entry=>[{:key=>"xx",:value=>'zzz'}]}}]
77
+ response = client.find('foo@bar.com')
78
+ steady_fields(response).should == {:xx => 'yyy'}
69
79
  end
70
80
 
71
81
  it "is nil when nothing was found" do
@@ -139,6 +149,18 @@ describe "EmailVision" do
139
149
  data = client.find(changeable_user[:email])
140
150
  data[:dateofbirth].strftime('%s').to_i.should == 1272664800
141
151
  end
152
+
153
+ it "can remove dateunjoin" do
154
+ pending
155
+ wait_for_job_to_finish do
156
+ client.unjoin(changeable_user[:email])
157
+ end
158
+ wait_for_job_to_finish do
159
+ client.update(:email => changeable_user[:email], :dateunjoin => 'NULL')
160
+ end
161
+ data = client.find(changeable_user[:email])
162
+ data[:dateunjoin].should == nil
163
+ end
142
164
 
143
165
  it "returns a job id" do
144
166
  job_id = client.update(:email => changeable_user[:email], :firstname => random_value)
@@ -213,4 +235,4 @@ describe "EmailVision" do
213
235
  Time.parse(date.to_s).should be_within(40).of(Time.now)
214
236
  end
215
237
  end
216
- end
238
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_vision
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 5
10
+ version: 0.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Grosser
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-17 00:00:00 +01:00
18
+ date: 2011-06-09 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -30,10 +30,10 @@ dependencies:
30
30
  - 8
31
31
  - 2
32
32
  version: 0.8.2
33
- prerelease: false
34
- version_requirements: *id001
35
33
  type: :runtime
36
34
  name: savon
35
+ version_requirements: *id001
36
+ prerelease: false
37
37
  - !ruby/object:Gem::Dependency
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -44,10 +44,10 @@ dependencies:
44
44
  segments:
45
45
  - 0
46
46
  version: "0"
47
- prerelease: false
48
- version_requirements: *id002
49
47
  type: :runtime
50
48
  name: savon
49
+ version_requirements: *id002
50
+ prerelease: false
51
51
  description:
52
52
  email: michael@grosser.it
53
53
  executables: []
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  requirements: []
97
97
 
98
98
  rubyforge_project:
99
- rubygems_version: 1.4.2
99
+ rubygems_version: 1.6.2
100
100
  signing_key:
101
101
  specification_version: 3
102
102
  summary: Ruby SOAP Api Client for EmailVision / CampaignCommander