Skip to content

Commit

Permalink
Merge pull request #127 from sparkapi/model-extractions
Browse files Browse the repository at this point in the history
Model extractions
  • Loading branch information
bhornseth authored Jan 1, 2017
2 parents ea0afcb + d5e1d80 commit 6b881c3
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ tmp/*
.buildpath
.project
*.swp
.bundle
2 changes: 2 additions & 0 deletions lib/spark_api/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
require 'spark_api/models/concerns'

require 'spark_api/models/account'
require 'spark_api/models/account_report'
require 'spark_api/models/account_roster'
require 'spark_api/models/activity'
require 'spark_api/models/connect_prefs'
require 'spark_api/models/contact'
Expand Down
31 changes: 31 additions & 0 deletions lib/spark_api/models/account_report.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module SparkApi
module Models
class AccountReport < Account
def self.report(account_id, arguments={})
collect(connection.get("/accounts/#{account_id}/report", arguments)).first
end

def DisplayName
self.Name
end

def primary_email
if Array(emails).any? && emails.primary
emails.primary.Address
end
end

def primary_phone
if Array(phones).any? && phones.primary
phones.primary.Number
end
end

def logo
if images.kind_of? Array
images.find { |image| image.Type == "Logo" }
end
end
end
end
end
9 changes: 9 additions & 0 deletions lib/spark_api/models/account_roster.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module SparkApi
module Models
class AccountRoster < Account
def self.roster(account_id, arguments={})
collect(connection.get("/accounts/#{account_id}/roster", arguments)).first
end
end
end
end
77 changes: 77 additions & 0 deletions spec/unit/spark_api/models/account_report_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
require './spec/spec_helper'

describe AccountReport do

let(:account_report) {
AccountReport.new({
"Id" => "12345",
"Name" => "Agent McAgentson",
"Office" => "Office Name",
"Emails"=> [],
"Phones"=> [],
"Websites"=> [],
"Addresses"=> []
})
}

describe 'primary_email' do

it 'returns the primary email address' do
account_report.emails << double(:Address => '[email protected]', :primary? => true)
expect(account_report.primary_email).to eq account_report.emails.primary.Address
end

it 'returns nil when there is no primary email address' do
account_report.emails << double(:Address => '[email protected]', :primary? => false)
expect(account_report.primary_email).to eq nil
end

it 'returns nil when there are no email addresses' do
allow(account_report).to receive(:emails).and_return nil
expect(account_report.primary_email).to eq nil
end

end

describe 'primary_phone' do

it 'returns the primary phone number' do
account_report.phones << double(:Number => '88', :primary? => true)
expect(account_report.primary_phone).to eq account_report.phones.primary.Number
end

it 'returns nil when there is no primary phone number' do
account_report.phones << double(:Number => '88', :primary? => false)
expect(account_report.primary_phone).to eq nil
end

it 'returns nil when there are no phone numbers' do
allow(account_report).to receive(:phones).and_return nil
expect(account_report.primary_phone).to eq nil
end

end

describe 'logo' do

it 'returns the logo' do
logo = SparkApi::Models::Base.new( {"Type" => "Logo"} )
not_logo = SparkApi::Models::Base.new( {"Type" => "Nope" } )
account_report.images = [logo, not_logo]
expect(account_report.logo).to be logo
end

it 'returns nil if there is no logo' do
not_logo = SparkApi::Models::Base.new( {"Type" => "Nope" } )
account_report.images = [not_logo]
expect(account_report.logo).to be nil
end

it 'returns nil if there are no images' do
expect(account_report.images).to be nil
expect(account_report.logo).to be nil
end

end

end

0 comments on commit 6b881c3

Please sign in to comment.