social_stream-base 0.16.2 → 0.16.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -318,6 +318,7 @@
318
318
  text-align: center;
319
319
  font-size: 15px;
320
320
  font-weight: bold;
321
+ cursor: pointer;
321
322
  }
322
323
  #sector_form .add_subsector:hover {
323
324
  background: $auxiliar-bright-color;
@@ -73,6 +73,9 @@ $(function(){
73
73
  $("#sector_editor").data("hide")();
74
74
  }
75
75
  };
76
+ cheese.onSubsectorAdded = function(subsector){
77
+ $("#sector_editor").data("prepare")(subsector.getCheesecake(),subsector);
78
+ };
76
79
  $("#contacts_filter_input").keyup(function(){
77
80
  cheese.searchEngine.filter($("#contacts_filter_input").val());
78
81
  //TODO: Make users unfiltered visible again
@@ -119,18 +119,20 @@
119
119
  });
120
120
  });
121
121
  $("#sector_editor").data("hide", function(callback){
122
- $("#sector_editor").stop().animate({width: 0},500, function(){
123
- $(".add_subsector_clone").remove();
124
- });
122
+ $("#sector_editor").stop().animate({width: 0},500);
125
123
  $("#contacts_explorer").stop().animate({width: 300},500, function(){
126
124
  if(callback) callback();
127
125
  });
128
126
  });
129
- $("#sector_editor").data("prepare", function(cheese){
127
+ $("#sector_editor").data("prepare", function(cheese, newSubsector){
130
128
  var sector = cheese.getFocusedSector();
131
- var subsector_count = sector.subsectors.length;
132
- var original_add_sector_row = $("#original_add_subsector_row");
129
+ var newIndex = -1;
130
+ if(newSubsector){
131
+ newIndex = newSubsector.getIndex();
132
+ }
133
133
  if(sector){
134
+ var subsector_count = sector.subsectors.length;
135
+ var maxReached = (subsector_count==4);
134
136
  $("#form_sector_name").val(sector.label);
135
137
  $("#edited_sector_name").html(sector.label);
136
138
  $("#form_sector_name").off("keyup");
@@ -138,44 +140,89 @@
138
140
  $("#edited_sector_name").html($("#form_sector_name").val());
139
141
  sector.changeLabel($("#form_sector_name").val());
140
142
  });
141
- $(".add_subsector_clone").remove();
142
- for(var i = 0; i < 4; i++){
143
- var subsector = sector.subsectors[i];
144
- if(subsector){
145
- var add_subsector_clone = original_add_sector_row.clone().attr("id", "add_subsector_" + i).addClass("add_subsector_clone").show();
146
- $("#subsector_" + i).parent().before(add_subsector_clone);
147
- $("#form_subsector_name_" + i).val(subsector.label);
148
- $("#edited_subsector_name_" + i).html(subsector.label);
149
- $("#form_subsector_name_" + i).off("keyup");
150
- $("#form_subsector_name_" + i).on("keyup", [i,subsector],function(event){
151
- $("#edited_subsector_name_" + event.data[0]).html($("#form_subsector_name_" + event.data[0]).val());
152
- event.data[1].changeLabel($("#form_subsector_name_" + event.data[0]).val());
153
- });
154
- $("#subsector_" + i).find(".permissions_field .permission").each(function(){
155
- var permission_field = $(this);
156
- var update_state = function(){
157
- var label_class = permission_field.attr("id").replace("form_", "edited_");
158
- if(permission_field.is(":checked")){
159
- $("." + label_class).removeClass("negative").addClass("positive");
160
- $("." + label_class).find(".negative_message").hide();
161
- $("." + label_class).find(".positive_message").show();
162
- }else{
163
- $("." + label_class).removeClass("positive").addClass("negative");
164
- $("." + label_class).find(".positive_message").hide();
165
- $("." + label_class).find(".negative_message").show();
143
+ if(maxReached){
144
+ $(".add_subsector").each(function(){
145
+ if($(this).is(':visible')){
146
+ $(this).slideToggle();
147
+ }
148
+ })
149
+ }
150
+ for(var i = 3; i >= 0; i--){
151
+ (function(){
152
+ var subsector = sector.subsectors[i];
153
+ var index = i;
154
+ var recentlyCreated = (newIndex != -1)&&(newIndex == index);
155
+ if(subsector){
156
+ if(!$("#subsector_" + i).is(':visible')){
157
+ $("#subsector_" + i).slideToggle();
158
+ }
159
+ if(recentlyCreated || ((newIndex == -1)&&(i == 0))){
160
+ if(!$("#subsector_" + i).find(".content").is(':visible')){
161
+ $("#subsector_" + i).find(".content").slideToggle();
162
+ }
163
+ }else{
164
+ if($("#subsector_" + i).find(".content").is(':visible')){
165
+ $("#subsector_" + i).find(".content").slideToggle();
166
166
  }
167
167
  }
168
- update_state();
169
- permission_field.on("change",update_state);
170
- });
171
- $("#subsector_" + i).show();
172
- }else{
173
- if(sector.subsectors[i-1]){
174
- var add_subsector_clone = original_add_sector_row.clone().attr("id", "add_subsector_" + i).addClass("add_subsector_clone").show();
175
- $("#subsector_" + (i-1)).parent().after(add_subsector_clone);
168
+ if(!maxReached){
169
+ if(sector.subsectors[i+1]==undefined){
170
+ $("#add_subsector_" + (i+1)).off("click");
171
+ if(!$("#add_subsector_" + (i+1)).is(':visible')){
172
+ $("#add_subsector_" + (i+1)).slideToggle();
173
+ }
174
+ $("#add_subsector_" + (i+1)).on("click",function(){
175
+ cheese.addNewSubsector(index+1);
176
+ $(".subsector .content").each(function(){
177
+ if($(this).is(':visible')){
178
+ $(this).slideToggle();
179
+ }
180
+ });
181
+ });
182
+ }
183
+ $("#add_subsector_" + i).off("click");
184
+ if(!$("#add_subsector_" + i).is(':visible')){
185
+ $("#add_subsector_" + i).slideToggle();
186
+ }
187
+ $("#add_subsector_" + i).on("click",function(){
188
+ cheese.addNewSubsector(index);
189
+ $(".subsector .content").each(function(){
190
+ if($(this).is(':visible')){
191
+ $(this).slideToggle();
192
+ }
193
+ });
194
+ });
195
+ }
196
+ $("#form_subsector_name_" + i).val(subsector.label);
197
+ $("#edited_subsector_name_" + i).html(subsector.label);
198
+ $("#form_subsector_name_" + i).off("keyup");
199
+ $("#form_subsector_name_" + i).on("keyup", [i,subsector],function(event){
200
+ $("#edited_subsector_name_" + event.data[0]).html($("#form_subsector_name_" + event.data[0]).val());
201
+ event.data[1].changeLabel($("#form_subsector_name_" + event.data[0]).val());
202
+ });
203
+ $("#subsector_" + i).find(".permissions_field .permission").each(function(){
204
+ var permission_field = $(this);
205
+ var update_state = function(){
206
+ var label_class = permission_field.attr("id").replace("form_", "edited_");
207
+ if(permission_field.is(":checked")){
208
+ $("." + label_class).removeClass("negative").addClass("positive");
209
+ $("." + label_class).find(".negative_message").hide();
210
+ $("." + label_class).find(".positive_message").show();
211
+ }else{
212
+ $("." + label_class).removeClass("positive").addClass("negative");
213
+ $("." + label_class).find(".positive_message").hide();
214
+ $("." + label_class).find(".negative_message").show();
215
+ }
216
+ }
217
+ update_state();
218
+ permission_field.on("change",update_state);
219
+ });
220
+ }else{
221
+ $("#subsector_" + i).hide();
222
+ $("#add_subsector_" + i).off("click");
223
+ $("#add_subsector_" + i).hide();
176
224
  }
177
- $("#subsector_" + i).hide();
178
- }
225
+ })();
179
226
  }
180
227
  }
181
228
  });
@@ -20,13 +20,8 @@
20
20
  <div id="edited_sector_color_in"></div>
21
21
  </div>
22
22
  </div>
23
- </div>
24
- <div class="form_row less_padding" id="original_add_subsector_row" style="display:none;">
25
- <div class="add_subsector">
26
- +
27
- </div>
28
- </div>
29
- <% for i in 0..3 do %>
23
+ </div>
24
+ <% 3.downto(0) do |i|%>
30
25
  <div class="form_row less_padding">
31
26
  <div class="subsector" id="subsector_<%= i %>">
32
27
  <div class="title">
@@ -48,17 +43,17 @@
48
43
  </div>
49
44
  <div class="form_row less_padding">
50
45
  <div class="form_field permissions_field">
51
- <% default_permissions.each_with_index do |p, i| %>
46
+ <% default_permissions.each_with_index do |p, j| %>
52
47
  <div contain=<%= dom_id p %> class="checkboxPermissionOptionLeft">
53
- <input id="form_subsector_<%= i %>_<%= dom_id p %>" class="permission <%= dom_id p %>" type="checkbox"/>
54
- <label for="form_subsector_<%= i %>_<%= dom_id p %>"><%= p.description(:brief, :relation => "%RELATION_NAME%", :subject => current_subject) %></label>
48
+ <input id="form_subsector_<%= j %>_<%= dom_id p %>" class="permission <%= dom_id p %>" type="checkbox"/>
49
+ <label for="form_subsector_<%= j %>_<%= dom_id p %>"><%= p.description(:brief, :relation => "%RELATION_NAME%", :subject => current_subject) %></label>
55
50
  <div class="clearfloat"></div>
56
51
  </div>
57
52
  <% end %>
58
53
  </div>
59
54
  <div class="permissions_explanation" style="display:none;">
60
- <% default_permissions.each_with_index do |p, i| %>
61
- <div class="permission <%= dom_id p %> positive edited_subsector_<%= i %>_<%= dom_id p %>">
55
+ <% default_permissions.each_with_index do |p, j| %>
56
+ <div class="permission <%= dom_id p %> positive edited_subsector_<%= j %>_<%= dom_id p %>">
62
57
  <div class="positive_message">
63
58
  <%= p.description(:detailed, :relation => "%RELATION_NAME%", :subject => current_subject, :state => "positive") %>
64
59
  </div>
@@ -72,6 +67,11 @@
72
67
  </div>
73
68
  </div>
74
69
  </div>
70
+ <div class="form_row less_padding">
71
+ <div class="add_subsector" id="add_subsector_<%= i %>">
72
+ +
73
+ </div>
74
+ </div>
75
75
  <% end %>
76
76
  </div>
77
77
  </form>
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.16.2".freeze
3
+ VERSION = "0.16.3".freeze
4
4
  end
5
5
  end
@@ -33,9 +33,7 @@ module SocialStream
33
33
  end
34
34
 
35
35
  def model_assigned_to contact, relation_ids
36
- model_attributes[:author_id] = contact.sender.id
37
36
  model_attributes[:owner_id] = contact.receiver.id
38
- model_attributes[:user_author_id] = contact.sender.id
39
37
  model_attributes[:_relation_ids] = Array(relation_ids).map(&:id)
40
38
  end
41
39
 
@@ -67,6 +65,25 @@ module SocialStream
67
65
  end
68
66
  end
69
67
 
68
+ shared_examples_for "Allow Reading" do
69
+ it "should read" do
70
+ get :show, :id => @current_model.to_param
71
+
72
+ response.should be_success
73
+ end
74
+ end
75
+
76
+ shared_examples_for "Deny Reading" do
77
+ it "should not read" do
78
+ begin
79
+ get :show, :id => @current_model.to_param
80
+
81
+ assert false
82
+ rescue CanCan::AccessDenied
83
+ end
84
+ end
85
+ end
86
+
70
87
  shared_examples_for "Allow Updating" do
71
88
  it "should update" do
72
89
  put :update, updating_attributes
@@ -7,73 +7,45 @@ namespace :db do
7
7
  desc "Reload populate data"
8
8
  task :reload => [ 'db:reset', :create ]
9
9
 
10
+ desc "Reload populate data for Cheesecake testing"
11
+ task :cheesecake => [ 'db:reset', :read_environment, :create_users, :create_groups, :create_cheesecake_ties, :create_avatars ]
12
+
10
13
  desc "Create populate data"
11
- task :create => :environment do
14
+ task :create => [ :read_environment, :create_users, :create_groups, :create_ties, :create_posts, :create_messages, :create_avatars ]
15
+
16
+ desc "INTERNAL: read needed environment data and setup variables"
17
+ task :read_environment => :environment do
12
18
  require 'forgery'
13
19
 
14
- LOGOS_PATH = File.join(Rails.root, 'lib', 'logos')
15
- LOGOS_TOTAL = (ENV["LOGOS_TOTAL"] || 10).to_i
16
- USERS = (ENV["USERS"] || 9).to_i
17
- GROUPS = (ENV["GROUPS"] || 10).to_i
18
- CHEESECAKE = (ENV["CHEESECAKE"].present? || false)
19
- if CHEESECAKE
20
- puts "Cheesecake Testing mode: ON"
21
- end
20
+ @LOGOS_PATH = File.join(Rails.root, 'lib', 'logos')
21
+ @LOGOS_TOTAL = (ENV["LOGOS_TOTAL"] || 10).to_i
22
+ @USERS = (ENV["USERS"] || 9).to_i
23
+ @GROUPS = (ENV["GROUPS"] || 10).to_i
22
24
  if ENV["HARDCORE"].present?
23
- USERS = 999
24
- GROUPS = 1000
25
+ @USERS = 999
26
+ @GROUPS = 1000
25
27
  puts "Hardcore mode: ON (May the Force be with you brave Padawan)"
26
- if CHEESECAKE
27
- puts "WARNING: Hardcore and Cheesecake Modes activated. This situation is really slow. Please, avoid it."
28
- end
29
28
  end
30
- if USERS < 9
31
- USERS = 9
29
+ if @USERS < 9
30
+ @USERS = 9
32
31
  puts "WARNING: There should be at least 10 users (Demo user and 9 more). Changing USERS to 9."
33
32
  end
34
- if GROUPS < 10
35
- GROUPS = 10
33
+ if @GROUPS < 10
34
+ @GROUPS = 10
36
35
  puts "WARNING: There should be at least 10 groups. Changing GROUPS to 10."
37
36
  end
38
37
 
39
38
  Mailboxer.setup do |config|
40
39
  config.uses_emails = false
41
40
  end
41
+ end
42
42
 
43
- def set_logos(klass)
44
- klass.all.each do |i|
45
- if LOGOS_TOTAL
46
- logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ rand(LOGOS_TOTAL) + 1 }.*")].first
47
- avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ rand(LOGOS_TOTAL) + 1 }.*")].first
48
- else
49
- logo = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
50
- avatar = Dir[File.join(LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
51
- end
52
-
53
- if avatar.present? && File.exists?(avatar)
54
- Avatar.copy_to_temp_file(avatar)
55
- dimensions = Avatar.get_image_dimensions(avatar)
56
- l = Avatar.new(:actor => i.actor,:logo => File.open(avatar), :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
57
- l.active = true
58
- l.save!
59
- end
60
- end
61
- end
62
-
63
- def set_tags(klass)
64
- klass.all.each do |el|
65
- el.tag_list = Forgery::LoremIpsum.words(1,:random => true)+", "+
66
- Forgery::LoremIpsum.words(1,:random => true)+", "+
67
- Forgery::LoremIpsum.words(1,:random => true)
68
- el.save!
69
- end
70
- end
71
-
72
- puts 'User population (Demo and ' + USERS.to_s + ' users more)'
43
+ # USERS
44
+ desc "Create users"
45
+ task :create_users => :read_environment do
46
+ puts 'User population (Demo and ' + @USERS.to_s + ' users more)'
73
47
  users_start = Time.now
74
48
 
75
- # = Users
76
-
77
49
  # Create demo user if not present
78
50
  if User.find_by_name('demo').blank?
79
51
  User.create! :name => 'Demo',
@@ -82,27 +54,39 @@ namespace :db do
82
54
  :password_confirmation => 'demonstration'
83
55
  end
84
56
 
85
- require 'forgery'
86
-
87
- USERS.times do
57
+ @USERS.times do
88
58
  User.create! :name => Forgery::Name.full_name,
89
59
  :email => Forgery::Internet.email_address,
90
60
  :password => 'demonstration',
91
61
  :password_confirmation => 'demonstration'
92
62
  end
93
63
 
64
+ # Reload actors to include new users
65
+ @available_actors = Actor.all
94
66
 
95
67
  users_end = Time.now
96
68
  puts ' -> ' + (users_end - users_start).round(4).to_s + 's'
69
+ end
70
+
97
71
 
98
- puts 'Groups population (' + GROUPS.to_s + ' groups)'
72
+ # GROUPS
73
+ desc "Create groups"
74
+ task :create_groups => :read_environment do
75
+ puts 'Groups population (' + @GROUPS.to_s + ' groups)'
99
76
  groups_start = Time.now
100
77
 
101
- # = Groups
102
- available_actors = Actor.all
78
+ def set_tags(klass)
79
+ klass.all.each do |el|
80
+ el.tag_list = Forgery::LoremIpsum.words(1,:random => true)+", "+
81
+ Forgery::LoremIpsum.words(1,:random => true)+", "+
82
+ Forgery::LoremIpsum.words(1,:random => true)
83
+ el.save!
84
+ end
85
+ end
86
+
103
87
 
104
- GROUPS.times do
105
- founder = available_actors[rand(available_actors.size)]
88
+ @GROUPS.times do
89
+ founder = @available_actors[rand(@available_actors.size)]
106
90
 
107
91
  Group.create! :name => Forgery::Name.company_name,
108
92
  :email => Forgery::Internet.email_address,
@@ -112,147 +96,188 @@ namespace :db do
112
96
 
113
97
  set_tags(Group)
114
98
 
99
+ # Reload actors to include groups
100
+ @available_actors = Actor.all
101
+
115
102
  groups_end = Time.now
116
103
  puts ' -> ' + (groups_end - groups_start).round(4).to_s + 's'
104
+ end
117
105
 
118
106
 
107
+ # TIES
108
+ desc "Create ties"
109
+ task :create_ties => :read_environment do
119
110
  puts 'Ties population'
120
111
  ties_start = Time.now
121
112
 
122
- # Reload actors to include groups
123
- available_actors = Actor.all
113
+ @available_actors.each do |a|
114
+ actors = @available_actors.dup - Array(a)
115
+ relations = a.relation_customs + Array.wrap(Relation::Reject.instance)
116
+ break if actors.size==0
117
+ Forgery::Basic.number(:at_most => actors.size).times do
118
+ actor = actors.delete_at((rand * actors.size).to_i)
119
+ contact = a.contact_to!(actor)
120
+ contact.user_author = a.user_author if a.subject_type != "User"
121
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
122
+ end
123
+ end
124
+
125
+ ties_end = Time.now
126
+ puts ' -> ' + (ties_end - ties_start).round(4).to_s + 's'
127
+ end
124
128
 
125
- # = Ties
126
- available_actors.each do |a|
127
- actors = available_actors.dup - Array(a)
129
+
130
+ # TIES, special version for cheesecake testing
131
+ desc "Create cheesecake ties"
132
+ task :create_cheesecake_ties => :read_environment do
133
+ puts 'Ties population (Cheesecake version)'
134
+ ties_start = Time.now
135
+
136
+ @available_actors.each do |a|
137
+ actors = @available_actors.dup - Array(a)
128
138
  relations = a.relation_customs + Array.wrap(Relation::Reject.instance)
129
- break if actors.size==0
130
- if CHEESECAKE
131
- actor = Actor.first
132
- unless a==actor
133
- puts a.name + " connecting with " + actor.name
134
- # DRY! :-S
135
- contact = a.contact_to!(actor)
136
- contact.user_author = a.user_author if a.subject_type != "User"
137
- contact.relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
138
-
139
- contact = actor.contact_to!(a)
140
- contact.user_author = actor.user_author if actor.subject_type != "User"
141
- contact.relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
142
- end
143
- else
144
- Forgery::Basic.number(:at_most => actors.size).times do
145
- actor = actors.delete_at((rand * actors.size).to_i)
146
- contact = a.contact_to!(actor)
147
- contact.user_author = a.user_author if a.subject_type != "User"
148
- contact.relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
149
- end
139
+ break if actors.size==0
140
+ actor = Actor.first
141
+ unless a==actor
142
+ puts a.name + " connecting with " + actor.name
143
+ # DRY! :-S
144
+ contact = a.contact_to!(actor)
145
+ contact.user_author = a.user_author if a.subject_type != "User"
146
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
147
+
148
+ contact = actor.contact_to!(a)
149
+ contact.user_author = actor.user_author if actor.subject_type != "User"
150
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
150
151
  end
151
152
  end
152
153
 
153
154
  ties_end = Time.now
154
155
  puts ' -> ' + (ties_end - ties_start).round(4).to_s + 's'
156
+ end
155
157
 
156
- # = Posts
158
+
159
+ # POSTS
160
+ desc "Create posts"
161
+ task :create_posts => :read_environment do
157
162
  puts 'Post population'
158
- unless CHEESECAKE
159
- posts_start = Time.now
160
-
161
- SocialStream::Populate.power_law(Tie.all) do |t|
162
- updated = Time.at(rand(Time.now.to_i))
163
-
164
- author = t.sender
165
- owner = t.receiver
166
- user_author = ( t.sender.subject_type == "User" ? t.sender : t.sender.user_author )
167
-
168
- p = Post.create :text =>
169
- "This post sActorhould be for #{ t.relation.name } of #{ t.sender.name }.\n#{ Forgery::LoremIpsum.paragraph(:random => true) }",
170
- :created_at => Time.at(rand(updated.to_i)),
171
- :updated_at => updated,
172
- :author_id => author.id,
173
- :owner_id => owner.id,
174
- :user_author_id => user_author.id,
175
- :_relation_ids => Array(t.relation_id)
176
-
177
- p.post_activity.update_attributes(:created_at => p.created_at,
178
- :updated_at => p.updated_at)
179
- end
180
-
181
- posts_end = Time.now
182
- puts ' -> ' + (posts_end - posts_start).round(4).to_s + 's'
183
- else
184
- puts ' -> Cheesecake Testing Mode. Avoiding Post Population.'
163
+ posts_start = Time.now
164
+
165
+ SocialStream::Populate.power_law(Tie.all) do |t|
166
+ updated = Time.at(rand(Time.now.to_i))
167
+
168
+ author = t.sender
169
+ owner = t.receiver
170
+ user_author = ( t.sender.subject_type == "User" ? t.sender : t.sender.user_author )
171
+
172
+ p = Post.create :text =>
173
+ "This post sActorhould be for #{ t.relation.name } of #{ t.sender.name }.\n#{ Forgery::LoremIpsum.paragraph(:random => true) }",
174
+ :created_at => Time.at(rand(updated.to_i)),
175
+ :updated_at => updated,
176
+ :author_id => author.id,
177
+ :owner_id => owner.id,
178
+ :user_author_id => user_author.id,
179
+ :_relation_ids => Array(t.relation_id)
180
+
181
+ p.post_activity.update_attributes(:created_at => p.created_at,
182
+ :updated_at => p.updated_at)
185
183
  end
186
184
 
187
- # = Mailboxer
185
+ posts_end = Time.now
186
+ puts ' -> ' + (posts_end - posts_start).round(4).to_s + 's'
187
+ end
188
+
189
+
190
+ # MESSAGES
191
+ desc "Create messages using mailboxer"
192
+ task :create_messages => :read_environment do
188
193
  puts 'Mailboxer population'
189
- unless CHEESECAKE
190
- mailboxer_start = Time.now
191
- available_actors = Actor.all
192
-
193
- available_actors.each do |a|
194
- actors = available_actors.dup - Array(a)
195
-
196
- mult_recp = actors.uniq
197
- if (demo = User.find_by_name('demo')) and !mult_recp.include? Actor.normalize(demo)
198
- mult_recp << Actor.normalize(demo)
199
- end
200
- actor = mult_recp[(rand * mult_recp.size).to_i]
201
- mult_recp.delete(actor)
202
- mail = actor.send_message(mult_recp, "Hello all, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
203
- actor = mult_recp[(rand * mult_recp.size).to_i]
204
- mail = actor.reply_to_all(mail, "Well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
205
- actor = mult_recp[(rand * mult_recp.size).to_i]
206
- mail = actor.reply_to_all(mail, "Ok, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
207
- actor = mult_recp[(rand * mult_recp.size).to_i]
208
- mail = actor.reply_to_all(mail, "Pretty well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
209
- actor = mult_recp[(rand * mult_recp.size).to_i]
210
- actor.reply_to_all(mail, "Finally, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
211
-
212
-
213
- if (demo = User.find_by_name('demo'))
214
- next if Actor.normalize(demo)==Actor.normalize(a)
215
- mail = a.send_message(demo, "Hello, #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
194
+ mailboxer_start = Time.now
195
+ @available_actors = Actor.all
196
+
197
+ @available_actors.each do |a|
198
+ actors = @available_actors.dup - Array(a)
199
+
200
+ mult_recp = actors.uniq
201
+ if (demo = User.find_by_name('demo')) and !mult_recp.include? Actor.normalize(demo)
202
+ mult_recp << Actor.normalize(demo)
203
+ end
204
+ actor = mult_recp[(rand * mult_recp.size).to_i]
205
+ mult_recp.delete(actor)
206
+ mail = actor.send_message(mult_recp, "Hello all, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
207
+ actor = mult_recp[(rand * mult_recp.size).to_i]
208
+ mail = actor.reply_to_all(mail, "Well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
209
+ actor = mult_recp[(rand * mult_recp.size).to_i]
210
+ mail = actor.reply_to_all(mail, "Ok, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
211
+ actor = mult_recp[(rand * mult_recp.size).to_i]
212
+ mail = actor.reply_to_all(mail, "Pretty well, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
213
+ actor = mult_recp[(rand * mult_recp.size).to_i]
214
+ actor.reply_to_all(mail, "Finally, I am #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
215
+
216
+
217
+ if (demo = User.find_by_name('demo'))
218
+ next if Actor.normalize(demo)==Actor.normalize(a)
219
+ mail = a.send_message(demo, "Hello, #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
220
+ if rand > 0.5
221
+ mail = demo.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
216
222
  if rand > 0.5
217
- mail = demo.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
218
- if rand > 0.5
219
- a.reply_to_sender(mail, "Ok #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
220
- end
221
- end
222
- if rand > 0.75
223
- mail.conversation.move_to_trash(demo)
223
+ a.reply_to_sender(mail, "Ok #{demo.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
224
224
  end
225
225
  end
226
-
227
- Forgery::Basic.number(:at_most => actors.size).times do
228
- actor = actors.delete_at((rand * actors.size).to_i)
229
- next if Actor.normalize(actor)==Actor.normalize(a)
230
- mail = a.send_message(actor, "Hello, #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
226
+ if rand > 0.75
227
+ mail.conversation.move_to_trash(demo)
228
+ end
229
+ end
230
+
231
+ Forgery::Basic.number(:at_most => actors.size).times do
232
+ actor = actors.delete_at((rand * actors.size).to_i)
233
+ next if Actor.normalize(actor)==Actor.normalize(a)
234
+ mail = a.send_message(actor, "Hello, #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}", Forgery::LoremIpsum.words(10,:random => true))
235
+ if rand > 0.5
236
+ mail = actor.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
231
237
  if rand > 0.5
232
- mail = actor.reply_to_sender(mail, "Pretty well #{a.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
233
- if rand > 0.5
234
- a.reply_to_sender(mail, "Ok #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
235
- end
236
- end
237
- if rand > 0.75
238
- mail.conversation.move_to_trash(actor)
238
+ a.reply_to_sender(mail, "Ok #{actor.name}. #{Forgery::LoremIpsum.sentences(2,:random => true)}")
239
239
  end
240
240
  end
241
+ if rand > 0.75
242
+ mail.conversation.move_to_trash(actor)
243
+ end
241
244
  end
242
-
243
- mailboxer_end = Time.now
244
- puts ' -> ' + (mailboxer_end - mailboxer_start).round(4).to_s + 's'
245
- else
246
- puts ' -> Cheesecake Testing Mode. Avoiding Mailboxer Population.'
247
245
  end
248
246
 
247
+ mailboxer_end = Time.now
248
+ puts ' -> ' + (mailboxer_end - mailboxer_start).round(4).to_s + 's'
249
+
250
+ end
251
+
252
+
253
+ # AVATARS
254
+ desc "Create avatars"
255
+ task :create_avatars => :read_environment do
256
+ def set_logos(klass)
257
+ klass.all.each do |i|
258
+ if @LOGOS_TOTAL
259
+ logo = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ rand(@LOGOS_TOTAL) + 1 }.*")].first
260
+ avatar = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ rand(@LOGOS_TOTAL) + 1 }.*")].first
261
+ else
262
+ logo = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
263
+ avatar = Dir[File.join(@LOGOS_PATH, klass.to_s.tableize, "#{ i.id }.*")].first
264
+ end
265
+
266
+ if avatar.present? && File.exists?(avatar)
267
+ Avatar.copy_to_temp_file(avatar)
268
+ dimensions = Avatar.get_image_dimensions(avatar)
269
+ l = Avatar.new(:actor => i.actor,:logo => File.open(avatar), :name => File.basename(avatar), :crop_x => 0, :crop_y => 0, :crop_w => dimensions[:width], :crop_h => dimensions[:height] )
270
+ l.active = true
271
+ l.save!
272
+ end
273
+ end
274
+ end
249
275
 
250
276
  puts 'Avatar population'
251
277
  avatar_start = Time.now
252
278
  SocialStream.subjects.each {|a| set_logos(Kernel.const_get(a.to_s.classify)) }
253
279
  avatar_end = Time.now
254
280
  puts ' -> ' + (avatar_end - avatar_start).round(4).to_s + 's'
255
-
256
281
  end
257
282
  end
258
283
  end
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
58
58
  # Autolink text blocks
59
59
  s.add_runtime_dependency('rails_autolink', '~> 1.0.4')
60
60
  # SocialCheesecake
61
- s.add_runtime_dependency('social_cheesecake','~> 0.3.0')
61
+ s.add_runtime_dependency('social_cheesecake','~> 0.4.0')
62
62
  # I18n-js
63
63
  s.add_runtime_dependency('i18n-js','~>2.1.2')
64
64
 
@@ -25,6 +25,7 @@ describe PostsController do
25
25
  end
26
26
 
27
27
  it_should_behave_like "Allow Creating"
28
+ it_should_behave_like "Allow Reading"
28
29
  it_should_behave_like "Allow Destroying"
29
30
 
30
31
  it "should destroy with js" do
@@ -49,6 +50,7 @@ describe PostsController do
49
50
  end
50
51
 
51
52
  it_should_behave_like "Allow Creating"
53
+ it_should_behave_like "Allow Reading"
52
54
  it_should_behave_like "Allow Destroying"
53
55
  end
54
56
 
@@ -63,6 +65,7 @@ describe PostsController do
63
65
  end
64
66
 
65
67
  it_should_behave_like "Allow Creating"
68
+ it_should_behave_like "Allow Reading"
66
69
  it_should_behave_like "Allow Destroying"
67
70
  end
68
71
  end
@@ -72,9 +75,13 @@ describe PostsController do
72
75
  friend = Factory(:friend, :contact => Factory(:contact, :receiver => @user.actor)).sender
73
76
 
74
77
  model_assigned_to @user.contact_to!(friend), friend.relation_custom('friend')
78
+ @current_model = Factory(:post, :author_id => @user.actor_id,
79
+ :owner_id => friend.id,
80
+ :user_author_id => @user.actor_id)
75
81
  end
76
82
 
77
83
  it_should_behave_like "Allow Creating"
84
+ it_should_behave_like "Allow Reading"
78
85
  end
79
86
 
80
87
  describe "post to acquaintance" do
@@ -87,6 +94,14 @@ describe PostsController do
87
94
  it_should_behave_like "Deny Creating"
88
95
  end
89
96
 
97
+ describe "post from other user" do
98
+ before do
99
+ @current_model = Factory(:post)
100
+ end
101
+
102
+ it_should_behave_like "Deny Reading"
103
+ end
104
+
90
105
  describe "posts represented group" do
91
106
  before do
92
107
  @group = Factory(:member, :contact => Factory(:group_contact, :receiver => @user.actor)).sender_subject
@@ -105,6 +120,7 @@ describe PostsController do
105
120
  end
106
121
 
107
122
  it_should_behave_like "Allow Creating"
123
+ it_should_behave_like "Allow Reading"
108
124
  it_should_behave_like "Allow Destroying"
109
125
  end
110
126
 
@@ -125,6 +141,7 @@ describe PostsController do
125
141
  end
126
142
 
127
143
  it_should_behave_like "Allow Creating"
144
+ it_should_behave_like "Allow Reading"
128
145
  it_should_behave_like "Allow Destroying"
129
146
  end
130
147
 
@@ -140,6 +157,7 @@ describe PostsController do
140
157
  end
141
158
 
142
159
  it_should_behave_like "Allow Creating"
160
+ it_should_behave_like "Allow Reading"
143
161
  it_should_behave_like "Allow Destroying"
144
162
  end
145
163
 
@@ -155,11 +173,11 @@ describe PostsController do
155
173
  end
156
174
 
157
175
  it_should_behave_like "Allow Creating"
176
+ it_should_behave_like "Allow Reading"
158
177
  it_should_behave_like "Allow Destroying"
159
178
  end
160
179
  end
161
180
  end
162
-
163
181
  end
164
182
 
165
183
  context "creating post in group's wall" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.16.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-21 00:00:00.000000000Z
13
+ date: 2012-02-28 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &81495330 !ruby/object:Gem::Requirement
17
+ requirement: &86562090 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *81495330
25
+ version_requirements: *86562090
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: ancestry
28
- requirement: &81494920 !ruby/object:Gem::Requirement
28
+ requirement: &86561710 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.2.3
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *81494920
36
+ version_requirements: *86561710
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: foreigner
39
- requirement: &81494510 !ruby/object:Gem::Requirement
39
+ requirement: &86514950 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.1.1
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *81494510
47
+ version_requirements: *86514950
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: devise
50
- requirement: &81494270 !ruby/object:Gem::Requirement
50
+ requirement: &86514700 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.5.3
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *81494270
58
+ version_requirements: *86514700
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: inherited_resources
61
- requirement: &81494010 !ruby/object:Gem::Requirement
61
+ requirement: &86514440 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.3.0
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *81494010
69
+ version_requirements: *86514440
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: stringex
72
- requirement: &81493640 !ruby/object:Gem::Requirement
72
+ requirement: &86514200 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.3.0
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *81493640
80
+ version_requirements: *86514200
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: avatars_for_rails
83
- requirement: &81486780 !ruby/object:Gem::Requirement
83
+ requirement: &86513870 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: 0.2.2
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *81486780
91
+ version_requirements: *86513870
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: jquery-rails
94
- requirement: &81486530 !ruby/object:Gem::Requirement
94
+ requirement: &86513640 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 1.0.9
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *81486530
102
+ version_requirements: *86513640
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: cancan
105
- requirement: &81486210 !ruby/object:Gem::Requirement
105
+ requirement: &86513400 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 1.6.4
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *81486210
113
+ version_requirements: *86513400
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: kaminari
116
- requirement: &81485880 !ruby/object:Gem::Requirement
116
+ requirement: &86513150 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 0.13.0
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *81485880
124
+ version_requirements: *86513150
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: omniauth
127
- requirement: &81485550 !ruby/object:Gem::Requirement
127
+ requirement: &86512910 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 1.0.2
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *81485550
135
+ version_requirements: *86512910
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: omniauth-facebook
138
- requirement: &81485240 !ruby/object:Gem::Requirement
138
+ requirement: &86512660 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ~>
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: 1.2.0
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *81485240
146
+ version_requirements: *86512660
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: omniauth-linkedin
149
- requirement: &81485000 !ruby/object:Gem::Requirement
149
+ requirement: &86512430 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ~>
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: 0.0.6
155
155
  type: :runtime
156
156
  prerelease: false
157
- version_requirements: *81485000
157
+ version_requirements: *86512430
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: mailboxer
160
- requirement: &81484680 !ruby/object:Gem::Requirement
160
+ requirement: &86512200 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ~>
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: 0.6.0
166
166
  type: :runtime
167
167
  prerelease: false
168
- version_requirements: *81484680
168
+ version_requirements: *86512200
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: acts-as-taggable-on
171
- requirement: &81484350 !ruby/object:Gem::Requirement
171
+ requirement: &86511970 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - ~>
@@ -176,10 +176,10 @@ dependencies:
176
176
  version: 2.2.2
177
177
  type: :runtime
178
178
  prerelease: false
179
- version_requirements: *81484350
179
+ version_requirements: *86511970
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: formtastic
182
- requirement: &81483950 !ruby/object:Gem::Requirement
182
+ requirement: &86511730 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ~>
@@ -187,10 +187,10 @@ dependencies:
187
187
  version: 1.2.3
188
188
  type: :runtime
189
189
  prerelease: false
190
- version_requirements: *81483950
190
+ version_requirements: *86511730
191
191
  - !ruby/object:Gem::Dependency
192
192
  name: simple-navigation
193
- requirement: &81483600 !ruby/object:Gem::Requirement
193
+ requirement: &86511500 !ruby/object:Gem::Requirement
194
194
  none: false
195
195
  requirements:
196
196
  - - ~>
@@ -198,10 +198,10 @@ dependencies:
198
198
  version: 3.5.1
199
199
  type: :runtime
200
200
  prerelease: false
201
- version_requirements: *81483600
201
+ version_requirements: *86511500
202
202
  - !ruby/object:Gem::Dependency
203
203
  name: resque
204
- requirement: &81483120 !ruby/object:Gem::Requirement
204
+ requirement: &86511260 !ruby/object:Gem::Requirement
205
205
  none: false
206
206
  requirements:
207
207
  - - ~>
@@ -209,10 +209,10 @@ dependencies:
209
209
  version: 1.19.0
210
210
  type: :runtime
211
211
  prerelease: false
212
- version_requirements: *81483120
212
+ version_requirements: *86511260
213
213
  - !ruby/object:Gem::Dependency
214
214
  name: modernizr-rails
215
- requirement: &81482650 !ruby/object:Gem::Requirement
215
+ requirement: &86511010 !ruby/object:Gem::Requirement
216
216
  none: false
217
217
  requirements:
218
218
  - - ~>
@@ -220,10 +220,10 @@ dependencies:
220
220
  version: 2.0.6
221
221
  type: :runtime
222
222
  prerelease: false
223
- version_requirements: *81482650
223
+ version_requirements: *86511010
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: thinking-sphinx
226
- requirement: &81482050 !ruby/object:Gem::Requirement
226
+ requirement: &86510720 !ruby/object:Gem::Requirement
227
227
  none: false
228
228
  requirements:
229
229
  - - ~>
@@ -231,10 +231,10 @@ dependencies:
231
231
  version: 2.0.8
232
232
  type: :runtime
233
233
  prerelease: false
234
- version_requirements: *81482050
234
+ version_requirements: *86510720
235
235
  - !ruby/object:Gem::Dependency
236
236
  name: sass-rails
237
- requirement: &81481710 !ruby/object:Gem::Requirement
237
+ requirement: &86510430 !ruby/object:Gem::Requirement
238
238
  none: false
239
239
  requirements:
240
240
  - - ! '>='
@@ -242,10 +242,10 @@ dependencies:
242
242
  version: 3.1.0
243
243
  type: :runtime
244
244
  prerelease: false
245
- version_requirements: *81481710
245
+ version_requirements: *86510430
246
246
  - !ruby/object:Gem::Dependency
247
247
  name: rails_autolink
248
- requirement: &81481330 !ruby/object:Gem::Requirement
248
+ requirement: &86510070 !ruby/object:Gem::Requirement
249
249
  none: false
250
250
  requirements:
251
251
  - - ~>
@@ -253,21 +253,21 @@ dependencies:
253
253
  version: 1.0.4
254
254
  type: :runtime
255
255
  prerelease: false
256
- version_requirements: *81481330
256
+ version_requirements: *86510070
257
257
  - !ruby/object:Gem::Dependency
258
258
  name: social_cheesecake
259
- requirement: &81480840 !ruby/object:Gem::Requirement
259
+ requirement: &86509750 !ruby/object:Gem::Requirement
260
260
  none: false
261
261
  requirements:
262
262
  - - ~>
263
263
  - !ruby/object:Gem::Version
264
- version: 0.3.0
264
+ version: 0.4.0
265
265
  type: :runtime
266
266
  prerelease: false
267
- version_requirements: *81480840
267
+ version_requirements: *86509750
268
268
  - !ruby/object:Gem::Dependency
269
269
  name: i18n-js
270
- requirement: &81480340 !ruby/object:Gem::Requirement
270
+ requirement: &86509470 !ruby/object:Gem::Requirement
271
271
  none: false
272
272
  requirements:
273
273
  - - ~>
@@ -275,10 +275,10 @@ dependencies:
275
275
  version: 2.1.2
276
276
  type: :runtime
277
277
  prerelease: false
278
- version_requirements: *81480340
278
+ version_requirements: *86509470
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: capybara
281
- requirement: &81480000 !ruby/object:Gem::Requirement
281
+ requirement: &86509110 !ruby/object:Gem::Requirement
282
282
  none: false
283
283
  requirements:
284
284
  - - ~>
@@ -286,10 +286,10 @@ dependencies:
286
286
  version: 0.3.9
287
287
  type: :development
288
288
  prerelease: false
289
- version_requirements: *81480000
289
+ version_requirements: *86509110
290
290
  - !ruby/object:Gem::Dependency
291
291
  name: sqlite3-ruby
292
- requirement: &81479690 !ruby/object:Gem::Requirement
292
+ requirement: &86508580 !ruby/object:Gem::Requirement
293
293
  none: false
294
294
  requirements:
295
295
  - - ! '>='
@@ -297,10 +297,10 @@ dependencies:
297
297
  version: '0'
298
298
  type: :development
299
299
  prerelease: false
300
- version_requirements: *81479690
300
+ version_requirements: *86508580
301
301
  - !ruby/object:Gem::Dependency
302
302
  name: ruby-debug19
303
- requirement: &81479310 !ruby/object:Gem::Requirement
303
+ requirement: &86508210 !ruby/object:Gem::Requirement
304
304
  none: false
305
305
  requirements:
306
306
  - - ! '>='
@@ -308,10 +308,10 @@ dependencies:
308
308
  version: '0'
309
309
  type: :development
310
310
  prerelease: false
311
- version_requirements: *81479310
311
+ version_requirements: *86508210
312
312
  - !ruby/object:Gem::Dependency
313
313
  name: rspec-rails
314
- requirement: &81478900 !ruby/object:Gem::Requirement
314
+ requirement: &86507670 !ruby/object:Gem::Requirement
315
315
  none: false
316
316
  requirements:
317
317
  - - ~>
@@ -319,10 +319,10 @@ dependencies:
319
319
  version: 2.6.1
320
320
  type: :development
321
321
  prerelease: false
322
- version_requirements: *81478900
322
+ version_requirements: *86507670
323
323
  - !ruby/object:Gem::Dependency
324
324
  name: factory_girl
325
- requirement: &81478590 !ruby/object:Gem::Requirement
325
+ requirement: &86507130 !ruby/object:Gem::Requirement
326
326
  none: false
327
327
  requirements:
328
328
  - - ~>
@@ -330,10 +330,10 @@ dependencies:
330
330
  version: 1.3.2
331
331
  type: :development
332
332
  prerelease: false
333
- version_requirements: *81478590
333
+ version_requirements: *86507130
334
334
  - !ruby/object:Gem::Dependency
335
335
  name: forgery
336
- requirement: &81478360 !ruby/object:Gem::Requirement
336
+ requirement: &86314900 !ruby/object:Gem::Requirement
337
337
  none: false
338
338
  requirements:
339
339
  - - ~>
@@ -341,10 +341,10 @@ dependencies:
341
341
  version: 0.4.2
342
342
  type: :development
343
343
  prerelease: false
344
- version_requirements: *81478360
344
+ version_requirements: *86314900
345
345
  - !ruby/object:Gem::Dependency
346
346
  name: ci_reporter
347
- requirement: &81478110 !ruby/object:Gem::Requirement
347
+ requirement: &86314570 !ruby/object:Gem::Requirement
348
348
  none: false
349
349
  requirements:
350
350
  - - ~>
@@ -352,10 +352,10 @@ dependencies:
352
352
  version: 1.6.4
353
353
  type: :development
354
354
  prerelease: false
355
- version_requirements: *81478110
355
+ version_requirements: *86314570
356
356
  - !ruby/object:Gem::Dependency
357
357
  name: nifty-generators
358
- requirement: &81477870 !ruby/object:Gem::Requirement
358
+ requirement: &86314210 !ruby/object:Gem::Requirement
359
359
  none: false
360
360
  requirements:
361
361
  - - ~>
@@ -363,7 +363,7 @@ dependencies:
363
363
  version: 0.4.5
364
364
  type: :development
365
365
  prerelease: false
366
- version_requirements: *81477870
366
+ version_requirements: *86314210
367
367
  description: ! 'Social Stream is a Ruby on Rails engine providing your application
368
368
  with social networking features and activity streams.
369
369