muck-services 3.0.0 → 3.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/Rakefile +6 -9
- data/VERSION +1 -1
- data/muck-services.gemspec +241 -362
- metadata +9 -241
- data/.gitignore +0 -30
- data/test/rails_test/app/controllers/application_controller.rb +0 -24
- data/test/rails_test/app/controllers/default_controller.rb +0 -7
- data/test/rails_test/app/helpers/application_helper.rb +0 -3
- data/test/rails_test/app/models/activity.rb +0 -24
- data/test/rails_test/app/models/comment.rb +0 -23
- data/test/rails_test/app/models/country.rb +0 -13
- data/test/rails_test/app/models/language.rb +0 -15
- data/test/rails_test/app/models/share.rb +0 -20
- data/test/rails_test/app/models/state.rb +0 -13
- data/test/rails_test/app/models/user.rb +0 -45
- data/test/rails_test/app/models/user_session.rb +0 -2
- data/test/rails_test/config/application.rb +0 -42
- data/test/rails_test/config/boot.rb +0 -13
- data/test/rails_test/config/environment.rb +0 -5
- data/test/rails_test/config/environments/development.rb +0 -26
- data/test/rails_test/config/environments/production.rb +0 -49
- data/test/rails_test/config/environments/test.rb +0 -35
- data/test/rails_test/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails_test/config/initializers/inflections.rb +0 -10
- data/test/rails_test/config/initializers/mce_options.rb +0 -83
- data/test/rails_test/config/initializers/mime_types.rb +0 -5
- data/test/rails_test/config/initializers/muck.rb +0 -66
- data/test/rails_test/config/initializers/secret_token.rb +0 -7
- data/test/rails_test/config/initializers/session_store.rb +0 -8
- data/test/rails_test/config/routes.rb +0 -12
- data/test/rails_test/db/migrate/20090320174818_create_muck_permissions_and_roles.rb +0 -16
- data/test/rails_test/db/migrate/20090327231918_create_users.rb +0 -40
- data/test/rails_test/db/migrate/20090402033319_add_muck_activities.rb +0 -36
- data/test/rails_test/db/migrate/20090402234137_create_languages.rb +0 -18
- data/test/rails_test/db/migrate/20090426041056_create_countries.rb +0 -15
- data/test/rails_test/db/migrate/20090426041103_create_states.rb +0 -18
- data/test/rails_test/db/migrate/20090512013727_create_profiles.rb +0 -21
- data/test/rails_test/db/migrate/20090517040220_create_uploads.rb +0 -38
- data/test/rails_test/db/migrate/20090602191243_create_muck_raker.rb +0 -322
- data/test/rails_test/db/migrate/20090613173314_create_comments.rb +0 -24
- data/test/rails_test/db/migrate/20090619211125_create_tag_clouds.rb +0 -19
- data/test/rails_test/db/migrate/20090623181458_add_grain_size_to_entries.rb +0 -16
- data/test/rails_test/db/migrate/20090623193525_add_grain_size_to_tag_clouds.rb +0 -12
- data/test/rails_test/db/migrate/20090703055724_add_contents.rb +0 -49
- data/test/rails_test/db/migrate/20090703175825_denormalize_entries_subjects.rb +0 -42
- data/test/rails_test/db/migrate/20090704220055_create_slugs.rb +0 -18
- data/test/rails_test/db/migrate/20090716035935_change_tag_cloud_grain_sizes.rb +0 -9
- data/test/rails_test/db/migrate/20090717173900_add_contributor_to_feeds.rb +0 -9
- data/test/rails_test/db/migrate/20090717175825_normalize_entries_subjects.rb +0 -47
- data/test/rails_test/db/migrate/20090721043213_change_services_title_to_name.rb +0 -9
- data/test/rails_test/db/migrate/20090721054927_remove_services_not_null_from_feeds.rb +0 -9
- data/test/rails_test/db/migrate/20090723050510_create_feed_parents.rb +0 -17
- data/test/rails_test/db/migrate/20090728165716_add_etag_to_feeds.rb +0 -9
- data/test/rails_test/db/migrate/20090730044139_add_comment_cache.rb +0 -9
- data/test/rails_test/db/migrate/20090730045848_add_comment_cache_to_entries.rb +0 -9
- data/test/rails_test/db/migrate/20090730154102_allow_null_user.rb +0 -9
- data/test/rails_test/db/migrate/20090803185323_create_shares.rb +0 -16
- data/test/rails_test/db/migrate/20090804184247_add_comment_count_to_shares.rb +0 -9
- data/test/rails_test/db/migrate/20090804211240_add_entry_id_to_shares.rb +0 -9
- data/test/rails_test/db/migrate/20090804231857_add_shares_uri_index.rb +0 -9
- data/test/rails_test/db/migrate/20090806230610_add_layout_to_contents.rb +0 -9
- data/test/rails_test/db/migrate/20090808175401_add_contents_comment_counter_cache.rb +0 -9
- data/test/rails_test/db/migrate/20090818204527_add_activity_indexes.rb +0 -9
- data/test/rails_test/db/migrate/20090819030523_add_attachable_to_activities.rb +0 -13
- data/test/rails_test/db/migrate/20090826220530_change_services_sequence_to_sort.rb +0 -9
- data/test/rails_test/db/migrate/20090826225652_create_identity_feeds.rb +0 -14
- data/test/rails_test/db/migrate/20090827005105_add_identity_fields_to_services.rb +0 -13
- data/test/rails_test/db/migrate/20090827015308_create_service_categories.rb +0 -12
- data/test/rails_test/db/migrate/20090827221502_add_prompt_and_template_to_services.rb +0 -11
- data/test/rails_test/db/migrate/20090915041650_aggregations_to_polymorphic.rb +0 -15
- data/test/rails_test/db/migrate/20090922174200_update_oai_endpoints.rb +0 -13
- data/test/rails_test/db/migrate/20090922231552_add_dates_to_oai_endpoints.rb +0 -11
- data/test/rails_test/db/migrate/20090923150807_rename_name_in_aggregation.rb +0 -9
- data/test/rails_test/db/migrate/20090924200750_add_uri_data_template_to_services.rb +0 -9
- data/test/rails_test/db/migrate/20091006183742_add_feed_count_to_aggregation.rb +0 -9
- data/test/rails_test/db/migrate/20091022150615_add_uri_key_to_services.rb +0 -9
- data/test/rails_test/db/migrate/20091115011828_add_aggregations_for_personal_recs.rb +0 -9
- data/test/rails_test/db/migrate/20091116094447_rename_action_table.rb +0 -38
- data/test/rails_test/db/migrate/20091118203605_add_default_feed_type_to_aggregation_feed.rb +0 -10
- data/test/rails_test/db/migrate/20091124203137_add_location_to_profiles.rb +0 -15
- data/test/rails_test/db/migrate/20091124205819_add_fields_to_profiles.rb +0 -21
- data/test/rails_test/db/migrate/20100123035450_create_access_codes.rb +0 -19
- data/test/rails_test/db/migrate/20100123233654_create_access_code_requests.rb +0 -14
- data/test/rails_test/db/migrate/20100206000906_remove_name_fields.rb +0 -15
- data/test/rails_test/db/migrate/20100903205928_add_dead_entry_fields.rb +0 -13
- data/test/rails_test/features/step_definitions/common_steps.rb +0 -93
- data/test/rails_test/features/step_definitions/visit_steps.rb +0 -6
- data/test/rails_test/features/step_definitions/web_steps.rb +0 -219
- data/test/rails_test/features/step_definitions/webrat_steps.rb +0 -128
- data/test/rails_test/features/support/custom_env.rb +0 -19
- data/test/rails_test/features/support/env.rb +0 -58
- data/test/rails_test/features/support/paths.rb +0 -33
- data/test/rails_test/lib/daemons/amazonaws.rb +0 -36
- data/test/rails_test/public/dispatch.rb +0 -10
- data/test/rails_test/spec/controllers/admin/feeds_controller_spec.rb +0 -38
- data/test/rails_test/spec/controllers/admin/oai_endpoints_controller_spec.rb +0 -30
- data/test/rails_test/spec/controllers/aggregation_feeds_controller_spec.rb +0 -67
- data/test/rails_test/spec/controllers/aggregations_controller_spec.rb +0 -89
- data/test/rails_test/spec/controllers/feed_previews_controller_spec.rb +0 -32
- data/test/rails_test/spec/controllers/feeds_controller_spec.rb +0 -78
- data/test/rails_test/spec/controllers/identity_feeds_controller_spec.rb +0 -110
- data/test/rails_test/spec/controllers/oai_endpoints_controller_spec.rb +0 -42
- data/test/rails_test/spec/controllers/topics_controller_spec.rb +0 -50
- data/test/rails_test/spec/controllers/visits_controller_spec.rb +0 -21
- data/test/rails_test/spec/factories.rb +0 -16
- data/test/rails_test/spec/mailers/services_mailer_spec.rb +0 -31
- data/test/rails_test/spec/models/aggregation_feed_spec.rb +0 -23
- data/test/rails_test/spec/models/aggregation_spec.rb +0 -87
- data/test/rails_test/spec/models/entry_spec.rb +0 -195
- data/test/rails_test/spec/models/feed_parent_spec.rb +0 -22
- data/test/rails_test/spec/models/feed_spec.rb +0 -204
- data/test/rails_test/spec/models/identity_feed_spec.rb +0 -18
- data/test/rails_test/spec/models/oai_endpoint_spec.rb +0 -78
- data/test/rails_test/spec/models/personal_recommendation_spec.rb +0 -60
- data/test/rails_test/spec/models/recommendation_spec.rb +0 -27
- data/test/rails_test/spec/models/service_category_spec.rb +0 -19
- data/test/rails_test/spec/models/service_spec.rb +0 -383
- data/test/rails_test/spec/models/share_spec.rb +0 -30
- data/test/rails_test/spec/models/tag_cloud_spec.rb +0 -23
- data/test/rails_test/spec/models/user_spec.rb +0 -45
- data/test/rails_test/spec/spec_helper.rb +0 -36
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
# == Schema Information
|
|
2
|
-
#
|
|
3
|
-
# Table name: entries
|
|
4
|
-
#
|
|
5
|
-
# id :integer(4) not null, primary key
|
|
6
|
-
# feed_id :integer(4) not null
|
|
7
|
-
# permalink :string(2083) default(""), not null
|
|
8
|
-
# author :string(2083)
|
|
9
|
-
# title :text default(""), not null
|
|
10
|
-
# description :text
|
|
11
|
-
# content :text
|
|
12
|
-
# unique_content :boolean(1)
|
|
13
|
-
# published_at :datetime not null
|
|
14
|
-
# entry_updated_at :datetime
|
|
15
|
-
# harvested_at :datetime
|
|
16
|
-
# oai_identifier :string(2083)
|
|
17
|
-
# language_id :integer(4)
|
|
18
|
-
# direct_link :string(2083)
|
|
19
|
-
# indexed_at :datetime default(Fri Jan 01 01:01:01 UTC 1971), not null
|
|
20
|
-
# relevance_calculated_at :datetime default(Fri Jan 01 01:01:01 UTC 1971), not null
|
|
21
|
-
# popular :text
|
|
22
|
-
# relevant :text
|
|
23
|
-
# other :text
|
|
24
|
-
# grain_size :string(255) default("unknown")
|
|
25
|
-
# comment_count :integer(4) default(0)
|
|
26
|
-
#
|
|
27
|
-
|
|
28
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
29
|
-
|
|
30
|
-
describe Entry do
|
|
31
|
-
|
|
32
|
-
describe "entry instance" do
|
|
33
|
-
before do
|
|
34
|
-
@entry = Factory(:entry)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it { should belong_to :feed }
|
|
38
|
-
|
|
39
|
-
describe "recommender_entry" do
|
|
40
|
-
it "should return an entry if the direct_link matches the specified uri" do
|
|
41
|
-
uri = Factory.next(:uri)
|
|
42
|
-
e = Factory.create(:entry, :direct_link => uri)
|
|
43
|
-
Entry.recommender_entry(uri).id.should == e.id
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should return an entry if the permalink matches the specified uri" do
|
|
47
|
-
uri = Factory.next(:uri)
|
|
48
|
-
e = Factory.create(:entry, :permalink => uri)
|
|
49
|
-
Entry.recommender_entry(uri).id.should == e.id
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should return an empty entry with the specified uri if the specified uri doesn't match" do
|
|
53
|
-
uri = Factory.next(:uri)
|
|
54
|
-
e = Factory.create(:entry, :permalink => uri)
|
|
55
|
-
Entry.recommender_entry(uri).should_not be_nil
|
|
56
|
-
Entry.recommender_entry(uri).permalink.should == uri
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
describe "resource_uri" do
|
|
61
|
-
it "should return the permalink when no direct_link is specified" do
|
|
62
|
-
@entry.direct_link = nil
|
|
63
|
-
@entry.resource_uri.should == @entry.permalink
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "should return the direct_link when a direct_link is specified" do
|
|
67
|
-
@entry.direct_link = Factory.next(:uri)
|
|
68
|
-
@entry.resource_uri.should == @entry.direct_link
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
describe "search" do
|
|
73
|
-
# it "should search indexes for ruby" do
|
|
74
|
-
# Entry.search('ruby', 'all', 'en', 10, 0)
|
|
75
|
-
# end
|
|
76
|
-
it "should raise invalid language error" do
|
|
77
|
-
lambda{
|
|
78
|
-
Entry.search('ruby', 'all', 'foo', 10, 0)
|
|
79
|
-
}.should raise_error(MuckServices::Exceptions::LanguageNotSupported)
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
describe "normalized_uri" do
|
|
84
|
-
it "should remove the trailing file name from any url that ends in index.*" do
|
|
85
|
-
index_uri = 'http://example.com/some_dir/'
|
|
86
|
-
['html','aspx','shtm','htm','asp','php','cfm','jsp','shtml','jhtml'].each { |ext|
|
|
87
|
-
Entry.normalized_uri(index_uri + 'index.' + ext).should == index_uri
|
|
88
|
-
}
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
describe "recommendation requested omitting certain feeds" do
|
|
93
|
-
it "should not contain entries from those feeds" do
|
|
94
|
-
feed1_id = Factory(:feed).id
|
|
95
|
-
feed2_id = Factory(:feed).id
|
|
96
|
-
feed1_id.should_not == feed2_id
|
|
97
|
-
Recommendation.create(:entry_id => @entry.id, :dest_entry_id => Factory.create(:entry, :feed_id => feed1_id).id)
|
|
98
|
-
Recommendation.create(:entry_id => @entry.id, :dest_entry_id => Factory.create(:entry, :feed_id => feed2_id).id)
|
|
99
|
-
r = @entry.related_entries.top(false, 5, feed2_id.to_s)
|
|
100
|
-
r.length.should == 1
|
|
101
|
-
r.each { |e| assert_not_equal feed2_id, e.feed_id}
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
describe "with 3 recommendations" do
|
|
106
|
-
before do
|
|
107
|
-
3.times { |n| Recommendation.create(:entry_id => @entry.id,
|
|
108
|
-
:dest_entry_id => Factory(:entry).id, :relevance => n.to_f/10.0) }
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it "should have 3 related_entries" do
|
|
112
|
-
@entry.related_entries.top.length.should == 3
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "should return only 2 if specified" do
|
|
116
|
-
@entry.related_entries.top(true,2).length.should == 2
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "should return results in order of relevance by default" do
|
|
120
|
-
related_entries = @entry.related_entries.top
|
|
121
|
-
related_entries[1].relevance.should < related_entries[0].relevance
|
|
122
|
-
related_entries[2].relevance.should < related_entries[1].relevance
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
describe "recommendation requested without details" do
|
|
128
|
-
it "should not have an author" do
|
|
129
|
-
Recommendation.create(:entry_id => @entry.id,
|
|
130
|
-
:dest_entry_id => Factory.create(:entry, :author => Factory.next(:name)).id,
|
|
131
|
-
:relevance => '.3')
|
|
132
|
-
lambda{
|
|
133
|
-
@entry.related_entries.top.first.author
|
|
134
|
-
}.should raise_error
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
it "should have basic fields" do
|
|
138
|
-
title = Factory.next(:name)
|
|
139
|
-
collection = Factory.next(:name)
|
|
140
|
-
feed_id = Factory(:feed, :short_title => collection).id
|
|
141
|
-
dest_entry_id = Factory.create(:entry, :title => title, :feed_id => feed_id).id
|
|
142
|
-
relevance = '.3'
|
|
143
|
-
recommendation_id = Recommendation.create(:entry_id => @entry.id, :relevance => relevance,
|
|
144
|
-
:dest_entry_id => dest_entry_id).id.to_s
|
|
145
|
-
r = @entry.related_entries.top(true).first
|
|
146
|
-
lambda do
|
|
147
|
-
r.recommendation_id.should == recommendation_id
|
|
148
|
-
r.relevance.to_f.should == relevance.to_f
|
|
149
|
-
r.title.should == title
|
|
150
|
-
r.collection.should == collection
|
|
151
|
-
r.dest_entry_id.should_not be_nil
|
|
152
|
-
end.should_not raise_error
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
describe "recommendation requested with details" do
|
|
157
|
-
it "should have basic and detailed fields" do
|
|
158
|
-
title = Factory.next(:name)
|
|
159
|
-
collection = Factory.next(:name)
|
|
160
|
-
author = Factory.next(:name)
|
|
161
|
-
published_at = DateTime.now
|
|
162
|
-
clicks = 23
|
|
163
|
-
average_time_at_dest = 44
|
|
164
|
-
description = Factory.next(:name)
|
|
165
|
-
permalink = Factory.next(:uri)
|
|
166
|
-
direct_uri = Factory.next(:uri)
|
|
167
|
-
feed_id = Factory(:feed, :short_title => collection).id
|
|
168
|
-
relevance = '.3'
|
|
169
|
-
dest_entry_id = Factory.create(:entry, :feed_id => feed_id, :title => title,
|
|
170
|
-
:author => author, :published_at => published_at, :permalink => permalink,
|
|
171
|
-
:direct_link => direct_uri, :description => description).id
|
|
172
|
-
recommendation_id = Recommendation.create(:entry_id => @entry.id, :relevance => relevance,
|
|
173
|
-
:avg_time_at_dest => average_time_at_dest, :clicks => clicks, :dest_entry_id => dest_entry_id).id.to_s
|
|
174
|
-
r = @entry.related_entries.top(true).first
|
|
175
|
-
lambda do
|
|
176
|
-
r.recommendation_id.should == recommendation_id
|
|
177
|
-
r.relevance.to_f.should == relevance.to_f
|
|
178
|
-
r.title.should == title
|
|
179
|
-
r.collection.should == collection
|
|
180
|
-
r.dest_entry_id.should_not be_nil
|
|
181
|
-
|
|
182
|
-
r.author.should == author
|
|
183
|
-
# r.published_at.should == published_at
|
|
184
|
-
r.clicks.to_i.should == clicks
|
|
185
|
-
r.permalink.should == permalink
|
|
186
|
-
r.direct_uri.should == direct_uri
|
|
187
|
-
r.average_time_at_dest.to_i.should == average_time_at_dest
|
|
188
|
-
r.description.should == description
|
|
189
|
-
end.should_not raise_error
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# == Schema Information
|
|
2
|
-
#
|
|
3
|
-
# Table name: feed_parents
|
|
4
|
-
#
|
|
5
|
-
# id :integer(4) not null, primary key
|
|
6
|
-
# feed_id :integer(4)
|
|
7
|
-
# ownable_id :integer(4)
|
|
8
|
-
# ownable_type :string(255)
|
|
9
|
-
# created_at :datetime
|
|
10
|
-
# updated_at :datetime
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
14
|
-
|
|
15
|
-
describe FeedParent do
|
|
16
|
-
|
|
17
|
-
describe "A feed parent instance" do
|
|
18
|
-
it { should belong_to :feed }
|
|
19
|
-
it { should belong_to :ownable }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
# == Schema Information
|
|
2
|
-
#
|
|
3
|
-
# Table name: feeds
|
|
4
|
-
#
|
|
5
|
-
# id :integer(4) not null, primary key
|
|
6
|
-
# uri :string(2083)
|
|
7
|
-
# display_uri :string(2083)
|
|
8
|
-
# title :string(1000)
|
|
9
|
-
# short_title :string(100)
|
|
10
|
-
# description :text
|
|
11
|
-
# tag_filter :string(1000)
|
|
12
|
-
# top_tags :text
|
|
13
|
-
# priority :integer(4) default(10)
|
|
14
|
-
# status :integer(4) default(1)
|
|
15
|
-
# last_requested_at :datetime default(Wed Jan 01 00:00:00 UTC 1969)
|
|
16
|
-
# last_harvested_at :datetime default(Wed Jan 01 00:00:00 UTC 1969)
|
|
17
|
-
# harvest_interval :integer(4) default(86400)
|
|
18
|
-
# failed_requests :integer(4) default(0)
|
|
19
|
-
# error_message :text
|
|
20
|
-
# service_id :integer(4) default(0)
|
|
21
|
-
# login :string(255)
|
|
22
|
-
# password :string(255)
|
|
23
|
-
# created_at :datetime
|
|
24
|
-
# updated_at :datetime
|
|
25
|
-
# entries_changed_at :datetime
|
|
26
|
-
# harvested_from_display_uri :string(2083)
|
|
27
|
-
# harvested_from_title :string(1000)
|
|
28
|
-
# harvested_from_short_title :string(100)
|
|
29
|
-
# entries_count :integer(4)
|
|
30
|
-
# default_language_id :integer(4) default(0)
|
|
31
|
-
# default_grain_size :string(255) default("unknown")
|
|
32
|
-
# contributor_id :integer(4)
|
|
33
|
-
# etag :string(255)
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
37
|
-
|
|
38
|
-
# Used to test muck_content_permission
|
|
39
|
-
describe Feed do
|
|
40
|
-
|
|
41
|
-
describe "A feed instance" do
|
|
42
|
-
before do
|
|
43
|
-
@feed = Factory(:feed)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it { should have_many :feed_parents }
|
|
47
|
-
it { should have_many :entries }
|
|
48
|
-
it { should belong_to :contributor }
|
|
49
|
-
it { should belong_to :default_language }
|
|
50
|
-
it { should belong_to :service }
|
|
51
|
-
|
|
52
|
-
it { should validate_presence_of :uri }
|
|
53
|
-
it { should validate_uniqueness_of :uri }
|
|
54
|
-
|
|
55
|
-
it { should scope_by_title }
|
|
56
|
-
it { should scope_newer_than }
|
|
57
|
-
it { should scope_by_newest }
|
|
58
|
-
|
|
59
|
-
it "should set 24 hours as default interval" do
|
|
60
|
-
@feed.harvest_interval_hours.should == 24
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "should set harvest interval by hours" do
|
|
64
|
-
@feed.harvest_interval_hours = 10
|
|
65
|
-
@feed.harvest_interval.should == 10 * 3600
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
describe "named scope" do
|
|
69
|
-
describe "banned" do
|
|
70
|
-
before do
|
|
71
|
-
@feed = Factory(:feed, :status => MuckServices::Status::BANNED)
|
|
72
|
-
@feed_not = Factory(:feed)
|
|
73
|
-
end
|
|
74
|
-
it "should find feeds that are banned" do
|
|
75
|
-
Feed.banned.should include(@feed)
|
|
76
|
-
end
|
|
77
|
-
it "should not find feeds that are not banned" do
|
|
78
|
-
Feed.banned.should_not include(@feed_not)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
describe "valid" do
|
|
82
|
-
before do
|
|
83
|
-
@feed = Factory(:feed, :status => 0)
|
|
84
|
-
@feed_not = Factory(:feed, :status => MuckServices::Status::BANNED)
|
|
85
|
-
end
|
|
86
|
-
it "should find valid feeds" do
|
|
87
|
-
Feed.valid.should include(@feed)
|
|
88
|
-
end
|
|
89
|
-
it "should not find invalid feeds" do
|
|
90
|
-
Feed.valid.should_not include(@feed_not)
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
describe "Feed status" do
|
|
98
|
-
before do
|
|
99
|
-
@feed = Factory(:feed)
|
|
100
|
-
end
|
|
101
|
-
it "should be banned" do
|
|
102
|
-
@feed.status = MuckServices::Status::BANNED
|
|
103
|
-
@feed.banned?.should be_true
|
|
104
|
-
end
|
|
105
|
-
it "should be approved" do
|
|
106
|
-
@feed.status = MuckServices::Status::APPROVED
|
|
107
|
-
@feed.banned?.should be_false
|
|
108
|
-
end
|
|
109
|
-
it "should be pending" do
|
|
110
|
-
@feed.status = MuckServices::Status::PENDING
|
|
111
|
-
@feed.pending?.should be_true
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
describe "Get feed information" do
|
|
116
|
-
it "shouldGet feed information" do
|
|
117
|
-
Feed.gather_information(TEST_URI)
|
|
118
|
-
end
|
|
119
|
-
it "shouldDiscover feeds from url" do
|
|
120
|
-
Feed.discover_feeds(TEST_URI)
|
|
121
|
-
end
|
|
122
|
-
it "shouldDiscover feeds from xml url" do
|
|
123
|
-
Feed.discover_feeds(TEST_XML_URI)[0].url.should == TEST_XML_URI
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
describe "Harvest feed" do
|
|
128
|
-
before do
|
|
129
|
-
@feed = Factory(:feed, :uri => TEST_RSS_URI, :display_uri => TEST_URI)
|
|
130
|
-
end
|
|
131
|
-
it "should get new entries" do
|
|
132
|
-
entries = @feed.harvest
|
|
133
|
-
entries.length.should > 0
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
describe "Delete feed if unused" do
|
|
138
|
-
before do
|
|
139
|
-
@user = Factory(:user)
|
|
140
|
-
@identity_user = Factory(:user)
|
|
141
|
-
@delete_feed = Factory(:feed, :contributor => @user)
|
|
142
|
-
@dont_delete_feed = Factory(:feed, :contributor => @user)
|
|
143
|
-
@identity_user.own_feeds << @dont_delete_feed
|
|
144
|
-
end
|
|
145
|
-
it "should delete feed" do
|
|
146
|
-
@delete_feed.delete_if_unused(@user).should be_true
|
|
147
|
-
end
|
|
148
|
-
it "should not delete feed" do
|
|
149
|
-
@dont_delete_feed.delete_if_unused(@user).should be_false
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
describe "global feed and references" do
|
|
154
|
-
before do
|
|
155
|
-
@global_feed = Factory(:feed)
|
|
156
|
-
@user = Factory(:user)
|
|
157
|
-
@feed = Factory(:feed)
|
|
158
|
-
@user.feeds << @feed
|
|
159
|
-
@feed.reload
|
|
160
|
-
@identity_feed = Factory(:feed)
|
|
161
|
-
@user.own_feeds << @identity_feed
|
|
162
|
-
@identity_feed.reload
|
|
163
|
-
@aggregation_feed = Factory(:feed)
|
|
164
|
-
@aggregation = Factory(:aggregation, :ownable => @user)
|
|
165
|
-
@aggregation.feeds << @aggregation_feed
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
describe "referenced feed" do
|
|
169
|
-
describe "feed" do
|
|
170
|
-
it "should be non-global" do
|
|
171
|
-
@feed.global?.should be_false
|
|
172
|
-
end
|
|
173
|
-
it "should be in use" do
|
|
174
|
-
@feed.in_use?.should be_true
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
describe "identity feed" do
|
|
178
|
-
it "should be non-global" do
|
|
179
|
-
@identity_feed.global?.should be_false
|
|
180
|
-
end
|
|
181
|
-
it "should be in use" do
|
|
182
|
-
@identity_feed.in_use?.should be_true
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
describe "aggregation feed" do
|
|
186
|
-
it "should be non-global" do
|
|
187
|
-
@aggregation_feed.global?.should be_false
|
|
188
|
-
end
|
|
189
|
-
it "should be in use" do
|
|
190
|
-
@aggregation_feed.in_use?.should be_true
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
describe "global feed" do
|
|
195
|
-
it "should be a global feed" do
|
|
196
|
-
@global_feed.global?.should be_true
|
|
197
|
-
end
|
|
198
|
-
it "should not be in use" do
|
|
199
|
-
@global_feed.in_use?.should be_false
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# == Schema Information
|
|
2
|
-
#
|
|
3
|
-
# Table name: identity_feeds
|
|
4
|
-
#
|
|
5
|
-
# id :integer(4) not null, primary key
|
|
6
|
-
# feed_id :integer(4) not null
|
|
7
|
-
# ownable_id :integer(4) not null
|
|
8
|
-
# ownable_type :string(255) not null
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
12
|
-
|
|
13
|
-
describe IdentityFeed do
|
|
14
|
-
describe "identity feed" do
|
|
15
|
-
it { should belong_to :ownable }
|
|
16
|
-
it { should belong_to :feed }
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# == Schema Information
|
|
2
|
-
#
|
|
3
|
-
# Table name: oai_endpoints
|
|
4
|
-
#
|
|
5
|
-
# id :integer(4) not null, primary key
|
|
6
|
-
# uri :string(2083)
|
|
7
|
-
# display_uri :string(2083)
|
|
8
|
-
# metadata_prefix :string(255)
|
|
9
|
-
# title :string(1000)
|
|
10
|
-
# short_title :string(100)
|
|
11
|
-
# contributor_id :integer(4)
|
|
12
|
-
# status :integer(4)
|
|
13
|
-
# default_language_id :integer(4)
|
|
14
|
-
# created_at :datetime
|
|
15
|
-
# updated_at :datetime
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
19
|
-
|
|
20
|
-
# Used to test muck_content_permission
|
|
21
|
-
describe OaiEndpoint do
|
|
22
|
-
|
|
23
|
-
describe "An oai endpoint instance" do
|
|
24
|
-
before do
|
|
25
|
-
@oai_endpoint = Factory(:oai_endpoint)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it { should belong_to :contributor }
|
|
29
|
-
it { should belong_to :default_language }
|
|
30
|
-
it { should validate_presence_of :uri }
|
|
31
|
-
it { should scope_by_title }
|
|
32
|
-
it { should scope_newer_than }
|
|
33
|
-
it { should scope_by_newest }
|
|
34
|
-
|
|
35
|
-
describe "named scope" do
|
|
36
|
-
describe "banned" do
|
|
37
|
-
before do
|
|
38
|
-
@oai_endpoint = Factory(:oai_endpoint, :status => MuckServices::Status::BANNED)
|
|
39
|
-
@oai_endpoint_not = Factory(:oai_endpoint)
|
|
40
|
-
end
|
|
41
|
-
it "should find oai_endpoints that are banned" do
|
|
42
|
-
OaiEndpoint.banned.should include(@oai_endpoint)
|
|
43
|
-
end
|
|
44
|
-
it "should not find oai_endpoints that are not banned" do
|
|
45
|
-
OaiEndpoint.banned.should_not include(@oai_endpoint_not)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
describe "valid" do
|
|
49
|
-
before do
|
|
50
|
-
@oai_endpoint = Factory(:oai_endpoint, :status => 0)
|
|
51
|
-
@oai_endpoint_not = Factory(:oai_endpoint, :status => MuckServices::Status::BANNED)
|
|
52
|
-
end
|
|
53
|
-
it "should find valid oai_endpoints" do
|
|
54
|
-
OaiEndpoint.valid.should include(@oai_endpoint)
|
|
55
|
-
end
|
|
56
|
-
it "should not find invalid oai_endpoints" do
|
|
57
|
-
OaiEndpoint.valid.should_not include(@oai_endpoint_not)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
describe "banned/unbanned" do
|
|
65
|
-
before do
|
|
66
|
-
@oai_endpoint = Factory(:oai_endpoint)
|
|
67
|
-
end
|
|
68
|
-
it "should be banned" do
|
|
69
|
-
@oai_endpoint.status = -1
|
|
70
|
-
@oai_endpoint.banned?.should be_true
|
|
71
|
-
end
|
|
72
|
-
it "should not be banned" do
|
|
73
|
-
@oai_endpoint.status = 0
|
|
74
|
-
@oai_endpoint.banned?.should be_false
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
end
|