spec/highrise/person_spec.rb in highrise-3.2.1 vs spec/highrise/person_spec.rb in highrise-3.2.3
- old
+ new
@@ -27,11 +27,73 @@
subject.should_receive(:first_name).and_return("Marcos")
subject.should_receive(:last_name).and_return("Tapajós ")
subject.name.should == "Marcos Tapajós"
end
+ describe "#email_addresses" do
+ it "returns an empty array when there are none set" do
+ subject.email_addresses.should == []
+ end
+
+ it "returns all email_addresses as string in an array" do
+ subject = Highrise::Person.new(:id => 1,
+ :contact_data => {
+ :email_addresses => [{
+ :email_address => {
+ :address => "important@person.com"
+ }
+ }]
+ })
+ subject.email_addresses.should == ["important@person.com"]
+ end
+ end
+
+ describe "#phone_numbers" do
+ it "returns an empty array when there is none set" do
+ subject.phone_numbers.should== []
+ end
+
+ it "returns all phone numbers as a string aray" do
+ subject = Highrise::Person.new(:id => 1,
+ :contact_data => {
+ :phone_numbers => [{
+ :phone_number => {
+ :number => "123456789"
+ }
+ }]
+ })
+ subject.phone_numbers.should== [ "123456789" ]
+ end
+ end
+
describe "#tags" do
+
+ let(:person_tags) { [
+ {'id' => "414578", 'name' => "cliente"},
+ {'id' => "414580", 'name' => "ged"},
+ {'id' => "414579", 'name' => "iepc"} ]
+ }
+
+ let(:person_john_doe) { { :id => 1, :first_name => "John", :last_name => "Doe" } }
+ let(:person_john_doe_request){ ActiveResource::Request.new(:get, '/people/1.xml', nil, {"Authorization"=>"Bearer OAUTH_TOKEN", "Accept"=>"application/xml"}) }
+ let(:person_john_doe_request_pair){ {person_john_doe_request => ActiveResource::Response.new(person_john_doe.to_xml, 200, {})} }
+
+ it "should return the tags as a Highrise::Tag" do
+ person_john_doe[:tags] = person_tags
+ ActiveResource::HttpMock.respond_to(person_john_doe_request_pair)
+ tags = person_tags.collect {|tag| Highrise::Tag.new(tag)}
+ subject.tags.should == tags
+ end
+
+ it "should return an empty collection when there are no tags" do
+ ActiveResource::HttpMock.respond_to(person_john_doe_request_pair)
+ subject.tags.should == []
+ end
+ end
+
+
+ describe "#tags" do
before(:each) do
(@tags = []).tap do
@tags << {'id' => "414578", 'name' => "cliente"}
@tags << {'id' => "414580", 'name' => "ged"}
@tags << {'id' => "414579", 'name' => "iepc"}
@@ -40,17 +102,17 @@
end
it {
subject.tags.should == @tags
}
end
-
+
describe "Custom fields" do
-
+
before (:each) do
- @fruit_person = Highrise::Person.new({ :person => {
- :id => 1,
- :first_name => "John",
+ @fruit_person = Highrise::Person.new({ :person => {
+ :id => 1,
+ :first_name => "John",
:last_name => "Doe",
:subject_datas => [{
:subject_field_label => "Fruit Banana",
:value => "Yellow"
}, {
@@ -59,56 +121,56 @@
}]
}
})
@subject_field_blueberry = Highrise::SubjectField.new ({:id => 1, :label => "Fruit Blueberry"})
@subject_field_papaya = Highrise::SubjectField.new ({:id => 2, :label => "Fruit Papaya"})
- end
-
+ end
+
it "Can get the value of a custom field via the field method" do
@fruit_person.field("Fruit Banana").should== "Yellow"
end
-
+
it "Can get the value of a custom field using a custom method call" do
@fruit_person.fruit_grape.should== "Green"
end
-
+
it "Will raise an exception on an unknown field" do
expect {@fruit_person.unknown_fruit}.to raise_exception(NoMethodError)
end
-
+
it "Can set the value of a custom field via the field method" do
@fruit_person.set_field_value("Fruit Grape", "Red")
@fruit_person.field("Fruit Grape").should== "Red"
end
-
+
it "Can set the value of a custom field" do
@fruit_person.fruit_grape= "Red"
@fruit_person.fruit_grape.should== "Red"
end
-
+
it "Assignment just returns the arguments (like ActiveResource base does)" do
Highrise::SubjectField.should_receive(:find).with(:all).and_return []
(@fruit_person.unknown_fruit = 10).should== 10
end
-
+
it "Can deal with the find returning nil (which is a bit ugly in the ActiveResource API)" do
Highrise::SubjectField.should_receive(:find).with(:all).and_return nil
- (@fruit_person.unknown_fruit = 10).should== 10
+ (@fruit_person.unknown_fruit = 10).should== 10
end
-
+
it "Can set the value of a custom field that wasn't there via the field method, but that was defined (happens on new Person)" do
Highrise::SubjectField.should_receive(:find).with(:all).and_return([@subject_field_papaya, @subject_field_blueberry])
@fruit_person.set_field_value("Fruit Blueberry", "Purple")
@fruit_person.field("Fruit Blueberry").should== "Purple"
@fruit_person.attributes["subject_datas"][2].subject_field_id.should == 1
end
-
+
it "Can still set and read the usual way of reading attrivutes" do
@fruit_person.first_name = "Jacob"
@fruit_person.first_name.should== "Jacob"
-
+
end
-
+
end
it { subject.label.should == 'Party' }
end