actv 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|