actv 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +30 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +64 -0
- data/Gemfile +4 -0
- data/Guardfile +20 -0
- data/LICENSE +22 -0
- data/README.md +63 -0
- data/Rakefile +17 -0
- data/actv.gemspec +34 -0
- data/lib/actv.rb +48 -0
- data/lib/actv/address.rb +9 -0
- data/lib/actv/article.rb +89 -0
- data/lib/actv/article_search_results.rb +15 -0
- data/lib/actv/asset.rb +186 -0
- data/lib/actv/asset_channel.rb +13 -0
- data/lib/actv/asset_component.rb +8 -0
- data/lib/actv/asset_description.rb +15 -0
- data/lib/actv/asset_description_type.rb +12 -0
- data/lib/actv/asset_image.rb +13 -0
- data/lib/actv/asset_legacy_data.rb +20 -0
- data/lib/actv/asset_price.rb +11 -0
- data/lib/actv/asset_seo_url.rb +5 -0
- data/lib/actv/asset_status.rb +17 -0
- data/lib/actv/asset_tag.rb +9 -0
- data/lib/actv/asset_topic.rb +11 -0
- data/lib/actv/base.rb +148 -0
- data/lib/actv/channel.rb +13 -0
- data/lib/actv/client.rb +330 -0
- data/lib/actv/configurable.rb +39 -0
- data/lib/actv/default.rb +87 -0
- data/lib/actv/error.rb +32 -0
- data/lib/actv/error/bad_gateway.rb +11 -0
- data/lib/actv/error/bad_request.rb +10 -0
- data/lib/actv/error/client_error.rb +39 -0
- data/lib/actv/error/enhance_your_calm.rb +10 -0
- data/lib/actv/error/forbidden.rb +10 -0
- data/lib/actv/error/internal_server_error.rb +11 -0
- data/lib/actv/error/not_acceptable.rb +10 -0
- data/lib/actv/error/not_found.rb +10 -0
- data/lib/actv/error/server_error.rb +19 -0
- data/lib/actv/error/service_unavailable.rb +11 -0
- data/lib/actv/error/unauthorized.rb +10 -0
- data/lib/actv/event.rb +213 -0
- data/lib/actv/event_result.rb +8 -0
- data/lib/actv/event_search_results.rb +11 -0
- data/lib/actv/evergreen.rb +53 -0
- data/lib/actv/facet.rb +16 -0
- data/lib/actv/facet_term.rb +5 -0
- data/lib/actv/facet_value.rb +7 -0
- data/lib/actv/identity.rb +28 -0
- data/lib/actv/interest.rb +39 -0
- data/lib/actv/null_object.rb +19 -0
- data/lib/actv/phone_number.rb +9 -0
- data/lib/actv/place.rb +24 -0
- data/lib/actv/popular_interest.rb +18 -0
- data/lib/actv/popular_interest_search_results.rb +12 -0
- data/lib/actv/request/multipart_with_file.rb +37 -0
- data/lib/actv/response/parse_json.rb +29 -0
- data/lib/actv/response/raise_client_error.rb +21 -0
- data/lib/actv/response/raise_server_error.rb +18 -0
- data/lib/actv/search_results.rb +30 -0
- data/lib/actv/sub_event.rb +15 -0
- data/lib/actv/tag.rb +9 -0
- data/lib/actv/topic.rb +9 -0
- data/lib/actv/user.rb +38 -0
- data/lib/actv/version.rb +3 -0
- data/spec/actv/article_search_results_spec.rb +16 -0
- data/spec/actv/article_spec.rb +44 -0
- data/spec/actv/asset_channel_spec.rb +17 -0
- data/spec/actv/asset_description_spec.rb +17 -0
- data/spec/actv/asset_image_spec.rb +27 -0
- data/spec/actv/asset_price_spec.rb +23 -0
- data/spec/actv/asset_spec.rb +172 -0
- data/spec/actv/asset_status_spec.rb +24 -0
- data/spec/actv/base_spec.rb +51 -0
- data/spec/actv/client/articles_spec.rb +130 -0
- data/spec/actv/client/assets_spec.rb +87 -0
- data/spec/actv/client/event_results_spec.rb +35 -0
- data/spec/actv/client/events_spec.rb +99 -0
- data/spec/actv/client/search_spec.rb +58 -0
- data/spec/actv/client/system_health_spec.rb +16 -0
- data/spec/actv/client/users_spec.rb +31 -0
- data/spec/actv/client_spec.rb +140 -0
- data/spec/actv/event_spec.rb +331 -0
- data/spec/actv/evergreen_spec.rb +33 -0
- data/spec/actv/identifiable_spec.rb +31 -0
- data/spec/actv/null_object_spec.rb +24 -0
- data/spec/actv/place_spec.rb +25 -0
- data/spec/actv/search_results_spec.rb +44 -0
- data/spec/actv/user_spec.rb +25 -0
- data/spec/actv_spec.rb +60 -0
- data/spec/faraday/response_spec.rb +0 -0
- data/spec/fixtures/me.json +21 -0
- data/spec/fixtures/system_health.json +1 -0
- data/spec/fixtures/valid_article.json +187 -0
- data/spec/fixtures/valid_asset.json +185 -0
- data/spec/fixtures/valid_event.json +188 -0
- data/spec/fixtures/valid_event_results.json +23 -0
- data/spec/fixtures/valid_evergreen.json +1 -0
- data/spec/fixtures/valid_evergreen_child_1.json +1 -0
- data/spec/fixtures/valid_search.json +1282 -0
- data/spec/fixtures/valid_search_no_event_results.json +5 -0
- data/spec/fixtures/valid_search_no_results.json +9 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/helper.rb +43 -0
- metadata +432 -0
data/lib/actv/user.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'actv/address'
|
2
|
+
require 'actv/phone_number'
|
3
|
+
|
4
|
+
module ACTV
|
5
|
+
class User < ACTV::Identity
|
6
|
+
|
7
|
+
attr_reader :first_name, :last_name, :middle_name, :gender,
|
8
|
+
:display_name, :date_of_birth, :email, :user_name, :created_date
|
9
|
+
|
10
|
+
attr_accessor :access_token
|
11
|
+
|
12
|
+
alias dob date_of_birth
|
13
|
+
|
14
|
+
def advantage_member
|
15
|
+
@is_member ||= begin
|
16
|
+
client= ACTV::Client.new({ oauth_token: @access_token })
|
17
|
+
client.is_advantage_member?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
alias is_advantage_member? advantage_member
|
21
|
+
|
22
|
+
def avatar_url
|
23
|
+
@avatar_url ||= begin
|
24
|
+
client= ACTV::Client.new({ oauth_token: @access_token })
|
25
|
+
client.avatar_url
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def address
|
30
|
+
@address ||= ACTV::Address.new(@attrs[:address]) unless @attrs[:address].nil?
|
31
|
+
end
|
32
|
+
|
33
|
+
def phone_number
|
34
|
+
@phone_number ||= ACTV::PhoneNumber.new(@attrs[:phone_number]) unless @attrs[:phone_number].nil?
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
data/lib/actv/version.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::ArticleSearchResults do
|
4
|
+
describe '#results' do
|
5
|
+
it 'should return an array of ACTV::Article when results is set' do
|
6
|
+
results = ACTV::ArticleSearchResults.new({results: [{assetGuid: '123', assetName: 'test1'}, {assetGuid: '345', assetName: 'test2'}]}).results
|
7
|
+
results.should be_a Array
|
8
|
+
results.first.should be_a ACTV::Article
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should return an emtpy array when results is not set' do
|
12
|
+
results = ACTV::ArticleSearchResults.new({}).results
|
13
|
+
results.should eql []
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::Article do
|
4
|
+
context "shoulda matchers" do
|
5
|
+
subject { ACTV::Article.new(assetGuid: 1) }
|
6
|
+
|
7
|
+
it { should respond_to :summary }
|
8
|
+
it { should respond_to :description }
|
9
|
+
it { should respond_to :by_line }
|
10
|
+
it { should respond_to :author_bio }
|
11
|
+
it { should respond_to :author_photo }
|
12
|
+
it { should respond_to :source }
|
13
|
+
it { should respond_to :type }
|
14
|
+
it { should respond_to :image }
|
15
|
+
it { should respond_to :subtitle }
|
16
|
+
it { should respond_to :footer }
|
17
|
+
it { should respond_to :inline_ad }
|
18
|
+
it { should respond_to :inline_ad? }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#inline_ad?' do
|
22
|
+
context 'if inlindead is set to true' do
|
23
|
+
let(:article) { ACTV::Article.new(assetGuid: 1, assetTags: [ { tag: { tagId: '1', tagName: 'true', tagDescription: 'inlinead' } } ]) }
|
24
|
+
it 'should return true' do
|
25
|
+
article.inline_ad?.should eq true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'if inlindead is set to false' do
|
30
|
+
let(:article) { ACTV::Article.new(assetGuid: 1, assetTags: [ { tag: { tagId: '1', tagName: 'false', tagDescription: 'inlinead' } } ]) }
|
31
|
+
it 'should return false' do
|
32
|
+
article.inline_ad?.should eq false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'if inlindead is not set' do
|
37
|
+
let(:article) { ACTV::Article.new assetGuid: 1 }
|
38
|
+
|
39
|
+
it 'should return true' do
|
40
|
+
article.inline_ad?.should eq true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::AssetChannel do
|
4
|
+
|
5
|
+
describe "#channel" do
|
6
|
+
it "returns a Channel when channel is set" do
|
7
|
+
channel = ACTV::AssetChannel.new(sequence: "1", channel: { channelId: "1", channelName: "Channel", channelDsc: "Channel" }).channel
|
8
|
+
channel.should be_a ACTV::Channel
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns nil when channel is not set" do
|
12
|
+
channel = ACTV::AssetChannel.new(sequence: "1").channel
|
13
|
+
channel.should be_nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::AssetDescription do
|
4
|
+
|
5
|
+
describe "#description_type" do
|
6
|
+
it "returns a Asset Description Type when descriptionType is set" do
|
7
|
+
description_type = ACTV::AssetDescription.new(description: "Description #1", descriptionType: { descriptionTypeId: 1, descriptionTypeName: "TYPE" }).description_type
|
8
|
+
description_type.should be_a ACTV::AssetDescriptionType
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns nil when descriptionType is not set" do
|
12
|
+
description_type = ACTV::AssetDescription.new(description: "Description #1").description_type
|
13
|
+
description_type.should be_nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::AssetImage do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@img = ACTV::AssetImage.new(imageUrlAdr: 'http://test.com/1.jpg',
|
7
|
+
imageName: 'image1', imageCaptionTxt: 'caption1', linkUrl: 'http://test.com/',
|
8
|
+
linkTarget: '_blank')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "attribute accessors and aliases" do
|
12
|
+
subject { @img }
|
13
|
+
|
14
|
+
its(:url){ should eq 'http://test.com/1.jpg' }
|
15
|
+
its(:name){ should eq 'image1' }
|
16
|
+
its(:caption){ should eq 'caption1' }
|
17
|
+
its(:link){ should eq 'http://test.com/'}
|
18
|
+
its(:target){ should eq '_blank' }
|
19
|
+
|
20
|
+
its(:imageUrlAdr){ should eq 'http://test.com/1.jpg' }
|
21
|
+
its(:imageName){ should eq 'image1' }
|
22
|
+
its(:imageCaptionTxt){ should eq 'caption1' }
|
23
|
+
its(:linkUrl){ should eq 'http://test.com/'}
|
24
|
+
its(:linkTarget){ should eq '_blank' }
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::AssetPrice do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@price = ACTV::AssetPrice.new(effectiveDate: "2012-08-03T06:59:00", priceAmt: "10", maxPriceAmt: "15", minPriceAmt: "5")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "attribute accessors and aliases" do
|
10
|
+
subject { @price }
|
11
|
+
|
12
|
+
its(:effective_date){ should eq "2012-08-03T06:59:00" }
|
13
|
+
its(:amount){ should eq "10" }
|
14
|
+
its(:max_amount){ should eq "15" }
|
15
|
+
its(:min_amount){ should eq "5" }
|
16
|
+
|
17
|
+
its(:effectiveDate){ should eq "2012-08-03T06:59:00" }
|
18
|
+
its(:priceAmt){ should eq "10" }
|
19
|
+
its(:maxPriceAmt){ should eq "15" }
|
20
|
+
its(:minPriceAmt){ should eq "5" }
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::Asset do
|
4
|
+
|
5
|
+
describe "#==" do
|
6
|
+
it "return true when objects IDs are the same" do
|
7
|
+
asset = ACTV::Asset.new(assetGuid: 1, assetName: "Title 1")
|
8
|
+
other = ACTV::Asset.new(assetGuid: 1, assetName: "Title 2")
|
9
|
+
(asset == other).should be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "return false when objects IDs are different" do
|
13
|
+
asset = ACTV::Asset.new(assetGuid: 1)
|
14
|
+
other = ACTV::Asset.new(assetGuid: 2)
|
15
|
+
(asset == other).should be_false
|
16
|
+
end
|
17
|
+
|
18
|
+
it "return false when classes are different" do
|
19
|
+
asset = ACTV::Asset.new(assetGuid: 1)
|
20
|
+
other = ACTV::Identity.new(id: 1)
|
21
|
+
(asset == other).should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#place" do
|
26
|
+
it "returns a Place when place is set" do
|
27
|
+
place = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", place: { placeGuid: 1, placeName: "Name #1" }).place
|
28
|
+
place.should be_a ACTV::Place
|
29
|
+
end
|
30
|
+
|
31
|
+
it "return nil when place is not set" do
|
32
|
+
place = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").place
|
33
|
+
place.should be_nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#descriptions" do
|
38
|
+
it "returns an Array of Asset Descriptions when assetDescriptions is set" do
|
39
|
+
descriptions = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetDescriptions: [{ description: "Description #1" }, { description: "Description #2" }]).descriptions
|
40
|
+
descriptions.should be_a Array
|
41
|
+
descriptions.first.should be_a ACTV::AssetDescription
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns an empty array when assetDescriptions is not set" do
|
45
|
+
descriptions = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").descriptions
|
46
|
+
descriptions.should be_a Array
|
47
|
+
descriptions.should eq []
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#status" do
|
52
|
+
it "returns a Asset Status when assetStatus is set" do
|
53
|
+
status = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetStatus: { assetStatusId: 1, assetStatusName: "Status #1", isSearchable: true }).status
|
54
|
+
status.should be_a ACTV::AssetStatus
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns nil when assetStatus is not set" do
|
58
|
+
status = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").status
|
59
|
+
status.should be_nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#legacy_data" do
|
64
|
+
it "returns a Asset Legacy Data when assetLegacyData is set" do
|
65
|
+
legacy_data = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetLegacyData: { assetTypeId: 1, typeName: "Legacy Data", isSearchable: true }).legacy_data
|
66
|
+
legacy_data.should be_a ACTV::AssetLegacyData
|
67
|
+
end
|
68
|
+
|
69
|
+
it "returns nil when assetLegacyData is not set" do
|
70
|
+
legacy_data = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").legacy_data
|
71
|
+
legacy_data.should be_nil
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "#images" do
|
76
|
+
it "returns an Array of Asset Images when assetImages is set" do
|
77
|
+
images = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetImages: [{ imageUrlAdr: "img1.jpg" }, { imageUrlAdr: "img2.jpg" }]).images
|
78
|
+
images.should be_a Array
|
79
|
+
images.first.should be_a ACTV::AssetImage
|
80
|
+
end
|
81
|
+
|
82
|
+
it "returns an empty array when assetImages is not set" do
|
83
|
+
images = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").images
|
84
|
+
images.should be_a Array
|
85
|
+
images.should eq []
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "#tags" do
|
90
|
+
it "returns an Array of Asset Tags when assetTags is set" do
|
91
|
+
tags = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetTags: [{ tag: { tagId: 1, tagName: "Tag" } }]).tags
|
92
|
+
tags.should be_a Array
|
93
|
+
tags.first.should be_a ACTV::AssetTag
|
94
|
+
end
|
95
|
+
|
96
|
+
it "returns an empty array when assetImages is not set" do
|
97
|
+
tags = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").tags
|
98
|
+
tags.should be_a Array
|
99
|
+
tags.should eq []
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#components" do
|
104
|
+
it "returns an Array of Asset Components when assetComponents is set" do
|
105
|
+
components = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetComponents: [{ assetGuid: 1}]).components
|
106
|
+
components.should be_a Array
|
107
|
+
components.first.should be_a ACTV::AssetComponent
|
108
|
+
end
|
109
|
+
|
110
|
+
it "returns an empty array when assetComponents is not set" do
|
111
|
+
components = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").tags
|
112
|
+
components.should be_a Array
|
113
|
+
components.should eq []
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe "#prices" do
|
118
|
+
it "returns an Array of Asset Prices when assetPrices is set" do
|
119
|
+
prices = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetPrices: [{ effectiveDate: "2012-08-03T06:59:00", priceAmt: "10" }]).prices
|
120
|
+
prices.should be_a Array
|
121
|
+
prices.first.should be_a ACTV::AssetPrice
|
122
|
+
end
|
123
|
+
|
124
|
+
it "returns an empty array when assetComponents is not set" do
|
125
|
+
prices = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").tags
|
126
|
+
prices.should be_a Array
|
127
|
+
prices.should eq []
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "#topics" do
|
132
|
+
it "returns an Array of Asset Topics when assetTopics is set" do
|
133
|
+
topics = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1", assetTopics: [{ sequence: "1", topic: { topicId: "27", topicName: "Running" } }]).topics
|
134
|
+
topics.should be_a Array
|
135
|
+
topics.first.should be_a ACTV::AssetTopic
|
136
|
+
end
|
137
|
+
|
138
|
+
it "returns an empty array when assetComponents is not set" do
|
139
|
+
topics = ACTV::Asset.new(assetGuid: 1, assetName: "Asset #1").topics
|
140
|
+
topics.should be_a Array
|
141
|
+
topics.should eq []
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "is_article?" do
|
146
|
+
before(:each) do
|
147
|
+
stub_get("/v2/assets/valid_article.json").
|
148
|
+
to_return(body: fixture("valid_article.json"), headers: { content_type: "application/json; charset=utf-8" })
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should return true if the asset has Articles as an assetCategory" do
|
152
|
+
asset = ACTV.asset('valid_article')[0]
|
153
|
+
asset.is_article?.should be_true
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should return true if the asset has no assetCategories but the sourceSystem is Active.com Articles" do
|
157
|
+
asset = ACTV.asset('valid_article')[0]
|
158
|
+
asset.stub(:assetCategories).and_return([])
|
159
|
+
asset.is_article?.should be_true
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should return false if no assetCategory of Article" do
|
163
|
+
stub_get("/v2/assets/valid_event.json").
|
164
|
+
to_return(body: fixture("valid_event.json"), headers: { content_type: "application/json; charset=utf-8" })
|
165
|
+
|
166
|
+
asset = ACTV.asset('valid_event')[0]
|
167
|
+
asset.is_article?.should be_false
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::AssetStatus do
|
4
|
+
|
5
|
+
describe "#==" do
|
6
|
+
it "return true when objects IDs are the same" do
|
7
|
+
asset = ACTV::AssetStatus.new(assetStatusId: 1, assetStatusName: "Status 1")
|
8
|
+
other = ACTV::AssetStatus.new(assetStatusId: 1, assetStatusName: "Status 2")
|
9
|
+
(asset == other).should be_true
|
10
|
+
end
|
11
|
+
|
12
|
+
it "return false when objects IDs are different" do
|
13
|
+
asset = ACTV::AssetStatus.new(assetStatusId: 1)
|
14
|
+
other = ACTV::AssetStatus.new(assetStatusId: 2)
|
15
|
+
(asset == other).should be_false
|
16
|
+
end
|
17
|
+
|
18
|
+
it "return false when classes are different" do
|
19
|
+
asset = ACTV::AssetStatus.new(assetStatusId: 1)
|
20
|
+
other = ACTV::Identity.new(id: 1)
|
21
|
+
(asset == other).should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ACTV::Base do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@base = ACTV::Base.new(:id => 1)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#[]" do
|
10
|
+
it "calls methods using [] with symbol" do
|
11
|
+
@base[:object_id].should be_an Integer
|
12
|
+
end
|
13
|
+
it "calls methods using [] with string" do
|
14
|
+
@base['object_id'].should be_an Integer
|
15
|
+
end
|
16
|
+
it "returns nil for missing method" do
|
17
|
+
@base[:foo].should be_nil
|
18
|
+
@base['foo'].should be_nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#attrs" do
|
23
|
+
it "returns a hash of attributes" do
|
24
|
+
@base.attrs.should eq({:id => 1})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#delete" do
|
29
|
+
it "deletes an attribute and returns its value" do
|
30
|
+
base = ACTV::Base.new(:id => 1)
|
31
|
+
base.delete(:id).should eq(1)
|
32
|
+
base.attrs[:id].should be_nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#update" do
|
37
|
+
it "returns a hash of attributes" do
|
38
|
+
base = ACTV::Base.new(:id => 1)
|
39
|
+
base.update(:id => 2)
|
40
|
+
base.attrs[:id].should eq(2)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#to_hash" do
|
45
|
+
it "returns a hash" do
|
46
|
+
@base.to_hash.should be_a Hash
|
47
|
+
@base.to_hash[:id].should eq 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|