social_stream 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/.gitignore +1 -0
  2. data/.yardopts +2 -0
  3. data/Gemfile +2 -3
  4. data/Gemfile.lock +20 -3
  5. data/README.rdoc +2 -3
  6. data/Rakefile +15 -18
  7. data/app/controllers/groups_controller.rb +9 -0
  8. data/app/controllers/likes_controller.rb +47 -0
  9. data/app/controllers/ties_controller.rb +2 -72
  10. data/app/helpers/activities_helper.rb +5 -1
  11. data/app/helpers/ties_helper.rb +21 -10
  12. data/app/models/actor.rb +53 -14
  13. data/app/models/group.rb +13 -0
  14. data/app/models/tie.rb +11 -2
  15. data/app/models/user.rb +6 -0
  16. data/app/views/activities/_activity.html.erb +2 -2
  17. data/app/views/activities/_child.html.erb +23 -0
  18. data/app/views/activities/_jquery.html.erb +0 -2
  19. data/app/views/activities/{_activity_options.html.erb → _options.html.erb} +1 -1
  20. data/app/views/activities/_root.html.erb +32 -0
  21. data/app/views/activity_objects/_activity_object.html.erb +1 -0
  22. data/app/views/groups/_group.html.erb +3 -0
  23. data/app/views/groups/show.html.erb +28 -0
  24. data/app/views/home/_groups.html.erb +14 -0
  25. data/app/views/home/index.html.erb +1 -0
  26. data/app/views/likes/create.js.erb +2 -0
  27. data/app/views/likes/destroy.js.erb +1 -0
  28. data/app/views/ties/_form.html.erb +6 -0
  29. data/app/views/ties/_new.html.erb +26 -0
  30. data/app/views/ties/_pending.html.erb +2 -14
  31. data/app/views/ties/_pendings.html.erb +16 -0
  32. data/app/views/ties/_suggestions.html.erb +7 -3
  33. data/app/views/ties/_tie.html.erb +21 -0
  34. data/app/views/ties/create.js.erb +21 -0
  35. data/app/views/ties/new.html.erb +1 -0
  36. data/app/views/ties/new.js.erb +2 -0
  37. data/config/locales/en.yml +32 -11
  38. data/config/routes.rb +14 -0
  39. data/init.rb +3 -0
  40. data/lib/generators/social_stream/install_generator.rb +8 -4
  41. data/lib/generators/social_stream/templates/initializer.rb +1 -1
  42. data/lib/generators/social_stream/templates/migration.rb +14 -1
  43. data/lib/generators/social_stream/templates/seeds.yml +30 -0
  44. data/lib/paperclip/ext.rb +6 -0
  45. data/lib/social_stream.rb +1 -1
  46. data/lib/social_stream/models/actor.rb +19 -4
  47. data/lib/social_stream/models/supertype.rb +2 -6
  48. data/lib/social_stream/rails.rb +9 -3
  49. data/lib/social_stream/version.rb +1 -1
  50. data/social_stream.gemspec +15 -0
  51. data/spec/dummy/Rakefile +7 -0
  52. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  53. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  54. data/spec/dummy/app/models/ability.rb +23 -0
  55. data/spec/dummy/app/models/post.rb +2 -0
  56. data/spec/dummy/app/models/user.rb +2 -0
  57. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  58. data/spec/dummy/config.ru +4 -0
  59. data/spec/dummy/config/application.rb +46 -0
  60. data/spec/dummy/config/boot.rb +10 -0
  61. data/spec/dummy/config/database.yml +22 -0
  62. data/spec/dummy/config/environment.rb +5 -0
  63. data/spec/dummy/config/environments/development.rb +26 -0
  64. data/spec/dummy/config/environments/production.rb +49 -0
  65. data/spec/dummy/config/environments/test.rb +35 -0
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  67. data/spec/dummy/config/initializers/devise.rb +142 -0
  68. data/spec/dummy/config/initializers/inflections.rb +10 -0
  69. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  70. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  71. data/spec/dummy/config/initializers/session_store.rb +8 -0
  72. data/spec/dummy/config/initializers/social_stream.rb +5 -0
  73. data/spec/dummy/config/locales/en.yml +5 -0
  74. data/spec/dummy/config/routes.rb +58 -0
  75. data/spec/dummy/db/.gitignore +1 -0
  76. data/spec/dummy/db/migrate/.gitkeep +0 -0
  77. data/spec/dummy/db/schema.rb +116 -0
  78. data/spec/dummy/db/seeds.rb +9 -0
  79. data/spec/dummy/db/seeds/social_stream.yml +54 -0
  80. data/spec/dummy/log/.gitignore +1 -0
  81. data/spec/dummy/public/404.html +26 -0
  82. data/spec/dummy/public/422.html +26 -0
  83. data/spec/dummy/public/500.html +26 -0
  84. data/spec/dummy/public/favicon.ico +0 -0
  85. data/spec/dummy/public/javascripts/application.js +2 -0
  86. data/spec/dummy/public/javascripts/controls.js +965 -0
  87. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  88. data/spec/dummy/public/javascripts/effects.js +1123 -0
  89. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  90. data/spec/dummy/public/javascripts/rails.js +175 -0
  91. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  92. data/spec/dummy/script/rails +6 -0
  93. data/spec/factories/activity.rb +10 -0
  94. data/spec/factories/actor.rb +4 -0
  95. data/spec/factories/group.rb +3 -0
  96. data/spec/factories/post.rb +3 -0
  97. data/spec/factories/tie.rb +38 -0
  98. data/spec/factories/user.rb +4 -0
  99. data/spec/integration/navigation_spec.rb +9 -0
  100. data/spec/models/activity_spec.rb +420 -0
  101. data/spec/models/actor_spec.rb +16 -0
  102. data/spec/models/post_spec.rb +33 -0
  103. data/spec/models/tie_spec.rb +30 -0
  104. data/spec/models/user_space.rb +10 -0
  105. data/spec/social_stream_spec.rb +7 -0
  106. data/spec/spec_helper.rb +45 -0
  107. data/spec/support/cancan.rb +1 -0
  108. data/spec/support/db.rb +4 -0
  109. metadata +155 -45
  110. data/app/views/activities/_root_activity.html.erb +0 -32
  111. data/app/views/activities/_subactivity.html.erb +0 -23
  112. data/app/views/ties/_suggestion.html.erb +0 -20
  113. data/lib/social_stream/rails/routes.rb +0 -19
@@ -0,0 +1,16 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Actor do
4
+ it "should generate permalink" do
5
+ assert Factory(:actor).permalink.present?
6
+ end
7
+
8
+ it "should generate different permalink" do
9
+ a = Factory(:actor)
10
+ b = Factory(:actor, :name => a.name)
11
+
12
+ a.name.should == b.name
13
+ a.permalink.should_not == b.permalink
14
+ end
15
+
16
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Post do
4
+ before do
5
+ @post = Factory(:post)
6
+ @post_activity_object = @post.activity_object
7
+ @post_activity = @post.post_activity
8
+ end
9
+
10
+ describe "with like activity" do
11
+ before do
12
+ @like_activity = Factory(:like_activity, :parent => @post_activity)
13
+ end
14
+
15
+ describe "when destroying" do
16
+ before do
17
+ @post.try(:destroy)
18
+ end
19
+
20
+ it "should also destroy its activity_object" do
21
+ assert_nil ActivityObject.find_by_id(@post_activity_object.id)
22
+ end
23
+
24
+ it "should also destroy its post_activity" do
25
+ assert_nil Activity.find_by_id(@post_activity.id)
26
+ end
27
+
28
+ it "should also destroy its children like activity" do
29
+ assert_nil Activity.find_by_id(@like_activity.id)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,30 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Tie do
4
+ it "should find the relation by its name" do
5
+ relation = Relation.first
6
+ sender = Factory(relation.sender_type.underscore)
7
+ receiver = Factory(relation.receiver_type.underscore)
8
+
9
+ tie = Factory(:tie, :sender_id => sender.actor.id,
10
+ :receiver_id => receiver.actor.id,
11
+ :relation_name => relation.name)
12
+ tie.should be_valid
13
+
14
+ end
15
+
16
+ describe "with a relation with inverse" do
17
+ before do
18
+ @relation = Relation.where("inverse_id IS NOT NULL").first
19
+ end
20
+
21
+ it "should have its inverse tie" do
22
+ @tie = Factory(:tie, :relation => @relation)
23
+
24
+ assert Tie.find_by_sender_id_and_receiver_id_and_relation_id(@tie.receiver_id,
25
+ @tie.sender_id,
26
+ @relation.inverse).present?
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe User do
4
+ it "should find by permalink" do
5
+ user = Factory(:user)
6
+
7
+ assert user.should == User.find_by_permalink(user.permalink)
8
+ end
9
+ end
10
+
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe SocialStream do
4
+ it "should be valid" do
5
+ SocialStream.should be_a(Module)
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+ require "rspec/rails"
7
+
8
+ ActionMailer::Base.delivery_method = :test
9
+ ActionMailer::Base.perform_deliveries = true
10
+ ActionMailer::Base.default_url_options[:host] = "test.com"
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+ # Configure capybara for integration testing
15
+ require "capybara/rails"
16
+ Capybara.default_driver = :rack_test
17
+ Capybara.default_selector = :css
18
+
19
+ # FIXME orm
20
+ #ActiveRecord::Migration.verbose = false
21
+
22
+ # Base migration
23
+ #require 'lib/generators/social_stream/templates/migration'
24
+ #CreateSocialStream.up
25
+
26
+ # Run any available migration
27
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
28
+
29
+ #require File.expand_path("../dummy/db/seeds", __FILE__)
30
+
31
+ # Load support files
32
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
33
+
34
+ # Load Factories
35
+ Dir["#{File.dirname(__FILE__)}/factories/*.rb"].each {|f| require f}
36
+
37
+ Rspec.configure do |config|
38
+ # Remove this line if you don't want Rspec's should and should_not
39
+ # methods or matchers
40
+ require 'rspec/expectations'
41
+ config.include Rspec::Matchers
42
+
43
+ # == Mock Framework
44
+ config.mock_with :rspec
45
+ end
@@ -0,0 +1 @@
1
+ require 'cancan/matchers'
@@ -0,0 +1,4 @@
1
+ require 'lib/generators/social_stream/templates/migration'
2
+ CreateSocialStream.up
3
+
4
+ require File.expand_path("../../dummy/db/seeds", __FILE__)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Antonio Tapiador
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-10-21 00:00:00 +02:00
19
+ date: 2010-10-28 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -67,7 +67,39 @@ dependencies:
67
67
  version: 1.1.2
68
68
  type: :runtime
69
69
  version_requirements: *id003
70
- description: Ruby on Rails plug-in supporting social networking features and activity streams.
70
+ - !ruby/object:Gem::Dependency
71
+ name: stringex
72
+ prerelease: false
73
+ requirement: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ hash: 31
79
+ segments:
80
+ - 1
81
+ - 2
82
+ - 0
83
+ version: 1.2.0
84
+ type: :runtime
85
+ version_requirements: *id004
86
+ - !ruby/object:Gem::Dependency
87
+ name: paperclip
88
+ prerelease: false
89
+ requirement: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ hash: 11
95
+ segments:
96
+ - 2
97
+ - 3
98
+ - 4
99
+ version: 2.3.4
100
+ type: :runtime
101
+ version_requirements: *id005
102
+ description: Ruby on Rails engine supporting social networking features and activity streams.
71
103
  email:
72
104
  executables: []
73
105
 
@@ -76,68 +108,146 @@ extensions: []
76
108
  extra_rdoc_files: []
77
109
 
78
110
  files:
111
+ - .gitignore
112
+ - .yardopts
113
+ - Gemfile
79
114
  - Gemfile.lock
80
115
  - LICENSE
81
- - Rakefile
82
- - Gemfile
83
116
  - README.rdoc
84
- - app/helpers/ties_helper.rb
117
+ - Rakefile
118
+ - app/controllers/activities_controller.rb
119
+ - app/controllers/comments_controller.rb
120
+ - app/controllers/groups_controller.rb
121
+ - app/controllers/home_controller.rb
122
+ - app/controllers/likes_controller.rb
123
+ - app/controllers/posts_controller.rb
124
+ - app/controllers/ties_controller.rb
85
125
  - app/helpers/activities_helper.rb
126
+ - app/helpers/ties_helper.rb
127
+ - app/models/activity.rb
86
128
  - app/models/activity_object.rb
87
- - app/models/relation_permission.rb
88
- - app/models/tie.rb
89
- - app/models/post.rb
90
- - app/models/user.rb
91
- - app/models/permission.rb
92
- - app/models/actor.rb
93
129
  - app/models/activity_object_activity.rb
130
+ - app/models/activity_verb.rb
131
+ - app/models/actor.rb
94
132
  - app/models/comment.rb
95
- - app/models/activity.rb
133
+ - app/models/group.rb
134
+ - app/models/permission.rb
135
+ - app/models/post.rb
96
136
  - app/models/relation.rb
97
- - app/models/activity_verb.rb
98
- - app/controllers/comments_controller.rb
99
- - app/controllers/ties_controller.rb
100
- - app/controllers/activities_controller.rb
101
- - app/controllers/home_controller.rb
102
- - app/controllers/posts_controller.rb
103
- - app/views/ties/_suggestions.html.erb
104
- - app/views/ties/_suggestion.html.erb
105
- - app/views/ties/_pending.html.erb
106
- - app/views/devise/registrations/new.html.erb
137
+ - app/models/relation_permission.rb
138
+ - app/models/tie.rb
139
+ - app/models/user.rb
140
+ - app/views/activities/_activity.html.erb
141
+ - app/views/activities/_child.html.erb
142
+ - app/views/activities/_comments.html.erb
143
+ - app/views/activities/_jquery.html.erb
144
+ - app/views/activities/_new.html.erb
145
+ - app/views/activities/_options.html.erb
146
+ - app/views/activities/_root.html.erb
147
+ - app/views/activity_objects/_activity_object.html.erb
148
+ - app/views/comments/_comment.html.erb
107
149
  - app/views/comments/_new.html.erb
108
150
  - app/views/comments/create.js.erb
109
151
  - app/views/comments/destroy.js.erb
110
- - app/views/comments/_comment.html.erb
152
+ - app/views/devise/registrations/new.html.erb
153
+ - app/views/groups/_group.html.erb
154
+ - app/views/groups/show.html.erb
155
+ - app/views/home/_activities.html.erb
156
+ - app/views/home/_groups.html.erb
157
+ - app/views/home/_location.html.erb
158
+ - app/views/home/index.html.erb
159
+ - app/views/likes/create.js.erb
160
+ - app/views/likes/destroy.js.erb
111
161
  - app/views/posts/_post.html.erb
112
162
  - app/views/posts/create.js.erb
113
163
  - app/views/posts/destroy.js.erb
114
- - app/views/activities/_activity.html.erb
115
- - app/views/activities/_activity_options.html.erb
116
- - app/views/activities/_jquery.html.erb
117
- - app/views/activities/_comments.html.erb
118
- - app/views/activities/_new.html.erb
119
- - app/views/activities/_root_activity.html.erb
120
- - app/views/activities/_subactivity.html.erb
121
- - app/views/home/_activities.html.erb
122
- - app/views/home/index.html.erb
123
- - app/views/home/_location.html.erb
164
+ - app/views/ties/_form.html.erb
165
+ - app/views/ties/_new.html.erb
166
+ - app/views/ties/_pending.html.erb
167
+ - app/views/ties/_pendings.html.erb
168
+ - app/views/ties/_suggestions.html.erb
169
+ - app/views/ties/_tie.html.erb
170
+ - app/views/ties/create.js.erb
171
+ - app/views/ties/new.html.erb
172
+ - app/views/ties/new.js.erb
124
173
  - config/locales/en.yml
174
+ - config/routes.rb
175
+ - init.rb
176
+ - lib/generators/social_stream/USAGE
177
+ - lib/generators/social_stream/install_generator.rb
178
+ - lib/generators/social_stream/templates/initializer.rb
179
+ - lib/generators/social_stream/templates/migration.rb
180
+ - lib/generators/social_stream/templates/seeds.yml
181
+ - lib/paperclip/ext.rb
125
182
  - lib/social_stream.rb
126
- - lib/social_stream/seed.rb
127
183
  - lib/social_stream/models/activity_object.rb
128
184
  - lib/social_stream/models/actor.rb
129
185
  - lib/social_stream/models/supertype.rb
130
186
  - lib/social_stream/rails.rb
131
- - lib/social_stream/rails/railtie.rb
132
187
  - lib/social_stream/rails/common.rb
133
188
  - lib/social_stream/rails/engine.rb
134
- - lib/social_stream/rails/routes.rb
189
+ - lib/social_stream/rails/railtie.rb
190
+ - lib/social_stream/seed.rb
135
191
  - lib/social_stream/version.rb
136
- - lib/generators/social_stream/templates/migration.rb
137
- - lib/generators/social_stream/templates/seeds.yml
138
- - lib/generators/social_stream/templates/initializer.rb
139
- - lib/generators/social_stream/install_generator.rb
140
- - lib/generators/social_stream/USAGE
192
+ - social_stream.gemspec
193
+ - spec/dummy/Rakefile
194
+ - spec/dummy/app/controllers/application_controller.rb
195
+ - spec/dummy/app/helpers/application_helper.rb
196
+ - spec/dummy/app/models/ability.rb
197
+ - spec/dummy/app/models/post.rb
198
+ - spec/dummy/app/models/user.rb
199
+ - spec/dummy/app/views/layouts/application.html.erb
200
+ - spec/dummy/config.ru
201
+ - spec/dummy/config/application.rb
202
+ - spec/dummy/config/boot.rb
203
+ - spec/dummy/config/database.yml
204
+ - spec/dummy/config/environment.rb
205
+ - spec/dummy/config/environments/development.rb
206
+ - spec/dummy/config/environments/production.rb
207
+ - spec/dummy/config/environments/test.rb
208
+ - spec/dummy/config/initializers/backtrace_silencers.rb
209
+ - spec/dummy/config/initializers/devise.rb
210
+ - spec/dummy/config/initializers/inflections.rb
211
+ - spec/dummy/config/initializers/mime_types.rb
212
+ - spec/dummy/config/initializers/secret_token.rb
213
+ - spec/dummy/config/initializers/session_store.rb
214
+ - spec/dummy/config/initializers/social_stream.rb
215
+ - spec/dummy/config/locales/en.yml
216
+ - spec/dummy/config/routes.rb
217
+ - spec/dummy/db/.gitignore
218
+ - spec/dummy/db/migrate/.gitkeep
219
+ - spec/dummy/db/schema.rb
220
+ - spec/dummy/db/seeds.rb
221
+ - spec/dummy/db/seeds/social_stream.yml
222
+ - spec/dummy/log/.gitignore
223
+ - spec/dummy/public/404.html
224
+ - spec/dummy/public/422.html
225
+ - spec/dummy/public/500.html
226
+ - spec/dummy/public/favicon.ico
227
+ - spec/dummy/public/javascripts/application.js
228
+ - spec/dummy/public/javascripts/controls.js
229
+ - spec/dummy/public/javascripts/dragdrop.js
230
+ - spec/dummy/public/javascripts/effects.js
231
+ - spec/dummy/public/javascripts/prototype.js
232
+ - spec/dummy/public/javascripts/rails.js
233
+ - spec/dummy/public/stylesheets/.gitkeep
234
+ - spec/dummy/script/rails
235
+ - spec/factories/activity.rb
236
+ - spec/factories/actor.rb
237
+ - spec/factories/group.rb
238
+ - spec/factories/post.rb
239
+ - spec/factories/tie.rb
240
+ - spec/factories/user.rb
241
+ - spec/integration/navigation_spec.rb
242
+ - spec/models/activity_spec.rb
243
+ - spec/models/actor_spec.rb
244
+ - spec/models/post_spec.rb
245
+ - spec/models/tie_spec.rb
246
+ - spec/models/user_space.rb
247
+ - spec/social_stream_spec.rb
248
+ - spec/spec_helper.rb
249
+ - spec/support/cancan.rb
250
+ - spec/support/db.rb
141
251
  has_rdoc: true
142
252
  homepage:
143
253
  licenses: []
@@ -171,6 +281,6 @@ rubyforge_project:
171
281
  rubygems_version: 1.3.7
172
282
  signing_key:
173
283
  specification_version: 3
174
- summary: Social networking features and activity streams.
284
+ summary: Social networking features and activity streams for Ruby on Rails.
175
285
  test_files: []
176
286
 
@@ -1,32 +0,0 @@
1
- <%= div_for root_activity do %>
2
- <div class="actor_logo">
3
- <%= link_to image_tag(root_activity.sender_subject.logo,
4
- :size => "50x50",
5
- :alt => root_activity.sender_subject.name),
6
- root_activity.sender_subject %>
7
- </div>
8
-
9
- <div class="activity_content">
10
- <div class="actor_name">
11
- <%= link_to(root_activity.sender_subject.name, root_activity.sender_subject) %>
12
- </div>
13
-
14
- <div class="activity_objects">
15
- <%= render root_activity.activity_objects %>
16
- </div>
17
-
18
- <%= render :partial => 'activities/activity_options',
19
- :locals => { :activity => root_activity } %>
20
-
21
- <%= render :partial => 'activities/comments',
22
- :locals => { :activity => root_activity } %>
23
-
24
- <%= render :partial => 'comments/new',
25
- :locals => { :activity => root_activity } %>
26
-
27
- </div>
28
- <div class="space_comments"></div>
29
- <div class="space_activities">
30
- <div class="space_sub"></div>
31
- </div>
32
- <% end %>