test/dummy/spec/functional/community_spec.rb in inkwell-1.1.1 vs test/dummy/spec/functional/community_spec.rb in inkwell-1.1.7

- old
+ new

@@ -3,28 +3,32 @@ describe "Community" do before(:each) do @salkar = User.create :nick => "Salkar" @morozovm = User.create :nick => "Morozovm" @talisman = User.create :nick => "Talisman" + @spy = User.create :nick => "Spy" @community_1 = Community.create :name => "Community_1", :owner_id => @talisman.id @salkar_post = @salkar.posts.create :body => "salkar_post_test_body" + @salkar.reload + @talisman.reload + @morozovm.reload end it "user should been added to community" do users_ids = ActiveSupport::JSON.decode @community_1.users_ids users_ids.size.should == 1 - communities_ids = ActiveSupport::JSON.decode @salkar.communities_ids - communities_ids.size.should == 0 + communities_info = ActiveSupport::JSON.decode @salkar.communities_info + communities_info.size.should == 0 @community_1.add_user :user => @salkar @community_1.reload @salkar.reload users_ids = ActiveSupport::JSON.decode @community_1.users_ids users_ids.size.should == 2 users_ids[1].should == @salkar.id - communities_ids = ActiveSupport::JSON.decode @salkar.communities_ids - communities_ids.size.should == 1 - communities_ids[0].should == @community_1.id + communities_info = ActiveSupport::JSON.decode @salkar.communities_info + communities_info.size.should == 1 + communities_info[0].should == {"c_id"=>@community_1.id, "a"=>"w"} end it "community's posts should been transferred to user timeline" do @salkar_post1 = @salkar.posts.create :body => "salkar_post_test_body1" @salkar_post2 = @salkar.posts.create :body => "salkar_post_test_body2" @@ -142,11 +146,11 @@ expect { @community_1.add_user @salkar }.to raise_error end it "user should be in community after added (include_user?)" do @community_1.include_user?(@salkar).should == false - @salkar.communities_ids = "[#{@community_1.id}]" + @salkar.communities_info = ActiveSupport::JSON.encode [{"c_id"=>@community_1.id, "a"=>"w"}] @community_1.users_ids = "[#{@salkar.id}]" @community_1.save @salkar.save @community_1.include_user?(@salkar).should == true end @@ -154,14 +158,13 @@ it "user should not be admin" do @community_1.include_admin?(@salkar).should == false end it "user should be admin" do - @salkar.admin_of = ActiveSupport::JSON.encode [{'community_id' => @salkar.id}] - @salkar.save - @community_1.admins_info = ActiveSupport::JSON.encode [{'user_id' => @salkar.id}] + @community_1.admins_info = ActiveSupport::JSON.encode [{'admin_id' => @salkar.id}] @community_1.save + @community_1.reload @community_1.include_admin?(@salkar).should == true end it "user should remove himself from community" do @community_1.add_user :user => @salkar @@ -171,11 +174,10 @@ @community_1.remove_user :user => @salkar @community_1.reload @salkar.reload @community_1.include_user?(@salkar).should == false ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@salkar.admin_of).size.should == 0 end it "community owner should not remove himself from community" do @community_1.reload @talisman.reload @@ -243,24 +245,20 @@ tline.where(:item_id => @morozovm_post2.id, :item_type => ::Inkwell::Constants::ItemTypes::POST).first.should == nil ActiveSupport::JSON.decode(tline.where(:item_id => @salkar_post8.id, :item_type => ::Inkwell::Constants::ItemTypes::POST).first.from_source).should == [Hash['user_id' => @salkar.id, 'type' => 'following']] end it "admin level of user should be returned" do - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 3}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 3}] @community_1.save @community_1.admin_level_of(@salkar).should == 3 end it "admin level of user should not be returned" do expect { @community_1.admin_level_of(@salkar) }.to raise_error end it "admin should be added" do - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -276,12 +274,10 @@ it "admin should not be added" do expect { @community_1.add_admin(:user => @salkar) }.to raise_error expect { @community_1.add_admin(:user => @salkar, :admin => @talisman) }.to raise_error expect { @community_1.add_admin(:user => "@salkar", :admin => "@talisman") }.to raise_error - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -289,16 +285,13 @@ @morozovm.reload expect { @community_1.add_admin :admin => @salkar, :user => @salkar }.to raise_error @community_1.reload @salkar.reload ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@salkar.admin_of).size.should == 1 end it "admin should be removed" do - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -312,11 +305,10 @@ @community_1.reload @morozovm.reload @community_1.include_admin?(@salkar).should == true @community_1.include_admin?(@morozovm).should == false ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@morozovm.admin_of).size.should == 0 @community_1.add_admin :admin => @salkar, :user => @morozovm @community_1.reload @morozovm.reload @community_1.include_admin?(@morozovm).should == true @@ -329,12 +321,10 @@ it "admin should not be removed" do expect { @community_1.remove_admin :admin => @salkar, :user => @morozovm }.to raise_error expect { @community_1.remove_admin :admin => "@salkar", :user => "@morozovm" }.to raise_error expect { @community_1.remove_admin :user => @morozovm }.to raise_error - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -410,11 +400,10 @@ @talisman.reload @morozovm.reload @salkar.communities_row.size.should == 0 @talisman.communities_row.size.should == 0 @morozovm.communities_row.size.should == 0 - ActiveSupport::JSON.decode(@talisman.admin_of).size.should == 0 end it "post should be added to community blogline and user's timeline" do @community_1.add_user :user => @salkar ::Inkwell::BlogItem.where(:owner_id => @community_1.id, :owner_type => ::Inkwell::Constants::OwnerTypes::COMMUNITY, :item_id => @salkar_post.id, :item_type => ::Inkwell::Constants::ItemTypes::POST).size.should == 0 @@ -558,21 +547,21 @@ end it "user should join community" do users_ids = ActiveSupport::JSON.decode @community_1.users_ids users_ids.size.should == 1 - communities_ids = ActiveSupport::JSON.decode @salkar.communities_ids - communities_ids.size.should == 0 + communities_info = ActiveSupport::JSON.decode @salkar.communities_info + communities_info.size.should == 0 @salkar.join @community_1 @community_1.reload @salkar.reload users_ids = ActiveSupport::JSON.decode @community_1.users_ids users_ids.size.should == 2 users_ids[1].should == @salkar.id - communities_ids = ActiveSupport::JSON.decode @salkar.communities_ids - communities_ids.size.should == 1 - communities_ids[0].should == @community_1.id + communities_info = ActiveSupport::JSON.decode @salkar.communities_info + communities_info.size.should == 1 + communities_info[0].should == {"c_id"=>@community_1.id, "a"=>"w"} end it "user should leave community" do @community_1.add_user :user => @salkar @community_1.reload @@ -581,11 +570,10 @@ @salkar.leave @community_1 @community_1.reload @salkar.reload @community_1.include_user?(@salkar).should == false ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@salkar.admin_of).size.should == 0 end it "user should be kicked from community" do @community_1.add_user :user => @salkar @community_1.reload @@ -595,11 +583,10 @@ @talisman.kick :user => @salkar, :from_community => @community_1 @community_1.reload @salkar.reload @community_1.include_user?(@salkar).should == false ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@salkar.admin_of).size.should == 0 end it "post should be sended to community" do @community_1.add_user :user => @salkar ::Inkwell::BlogItem.where(:owner_id => @community_1.id, :owner_type => ::Inkwell::Constants::OwnerTypes::COMMUNITY, :item_id => @salkar_post.id, :item_type => ::Inkwell::Constants::ItemTypes::POST).size.should == 0 @@ -645,12 +632,10 @@ @salkar_post.reload ActiveSupport::JSON.decode(@salkar_post.communities_ids).size.should == 0 end it "admin permissions should be granted" do - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -662,12 +647,10 @@ @community_1.include_admin?(@morozovm).should == true @community_1.admin_level_of(@morozovm).should == 1 end it "admin permissions should be revoked" do - @salkar.admin_of = ActiveSupport::JSON.encode [{:community_id => @community_1.id, :admin_level => 0}] - @salkar.save @community_1.admins_info = ActiveSupport::JSON.encode [{:admin_id => @salkar.id, :admin_level => 0}] @community_1.save @community_1.add_user :user => @salkar @community_1.add_user :user => @morozovm @community_1.reload @@ -681,9 +664,898 @@ @community_1.reload @morozovm.reload @community_1.include_admin?(@salkar).should == true @community_1.include_admin?(@morozovm).should == false ActiveSupport::JSON.decode(@community_1.admins_info).size.should == 1 - ActiveSupport::JSON.decode(@morozovm.admin_of).size.should == 0 + end + + it "community row should be returned for user" do + @community_2 = Community.create :name => "Community_1", :owner_id => @talisman.id + @community_3 = Community.create :name => "Community_1", :owner_id => @talisman.id + @talisman.reload + @talisman.communities_row.should == [@community_1.id, @community_2.id, @community_3.id] + end + + it "admin should be added to community users in open community" do + @community_1.reload + @talisman.reload + @community_1.include_user?(@talisman).should == true + @community_1.include_admin?(@talisman).should == true + end + + it "private community with default W access should be created" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.reload + @morozovm.reload + @private_community.public.should == false + @private_community.admins_info.should == "[{\"admin_id\":#{@morozovm.id},\"admin_level\":0}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @private_community.users_ids.should == "[#{@morozovm.id}]" + ActiveSupport::JSON.decode(@morozovm.communities_info).should == [{"c_id"=>@private_community.id, "a"=>"w"}] + end + + it "private community with default R access should be created" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.default_user_access = 'r' + @private_community.save + @private_community.reload + @morozovm.reload + @private_community.public.should == false + @private_community.admins_info.should == "[{\"admin_id\":#{@morozovm.id},\"admin_level\":0}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @private_community.users_ids.should == "[#{@morozovm.id}]" + ActiveSupport::JSON.decode(@morozovm.communities_info).should == [{"c_id"=>@private_community.id, "a"=>"w"}] + end + + it "public community with default W access should be created" do + @w_community = Community.create :name => "Community", :owner_id => @morozovm.id + @w_community.reload + @morozovm.reload + @w_community.public.should == true + @w_community.admins_info.should == "[{\"admin_id\":#{@morozovm.id},\"admin_level\":0}]" + @w_community.writers_ids.should == "[#{@morozovm.id}]" + @w_community.users_ids.should == "[#{@morozovm.id}]" + ActiveSupport::JSON.decode(@morozovm.communities_info).should == [{"c_id"=>@w_community.id, "a"=>"w"}] + end + + it "public community with default R access should be created" do + @community = Community.create :name => "Community", :owner_id => @morozovm.id + @community.default_user_access = 'r' + @community.save + @community.reload + @morozovm.reload + @community.public.should == true + @community.admins_info.should == "[{\"admin_id\":#{@morozovm.id},\"admin_level\":0}]" + @community.writers_ids.should == "[#{@morozovm.id}]" + @community.users_ids.should == "[#{@morozovm.id}]" + ActiveSupport::JSON.decode(@morozovm.communities_info).should == [{"c_id" => @community.id, "a" => "w"}] + end + + it "added to public community with default W access user should have W access" do + @w_community = Community.create :name => "Community", :owner_id => @morozovm.id + @w_community.reload + @morozovm.reload + @w_community.add_user :user => @salkar + @w_community.reload + @salkar.reload + @w_community.include_user?(@salkar).should == true + ActiveSupport::JSON.decode(@salkar.communities_info).should == [{"c_id" => @w_community.id, "a" => "w"}] + ActiveSupport::JSON.decode(@w_community.users_ids).should == [@morozovm.id, @salkar.id] + ActiveSupport::JSON.decode(@w_community.writers_ids).should == [@morozovm.id, @salkar.id] + end + + it "added to public community with default R access user should have R access" do + @community = Community.create :name => "Community", :owner_id => @morozovm.id + @community.default_user_access = 'r' + @community.save + @community.reload + @morozovm.reload + @community.add_user :user => @salkar + @community.reload + @salkar.reload + @community.include_user?(@salkar).should == true + ActiveSupport::JSON.decode(@salkar.communities_info).should == [{"c_id" => @community.id, "a" => "r"}] + ActiveSupport::JSON.decode(@community.users_ids).should == [@morozovm.id, @salkar.id] + ActiveSupport::JSON.decode(@community.writers_ids).should == [@morozovm.id] + end + + it "added to private community with default W access user should have W access" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @private_community.include_user?(@salkar).should == true + @private_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @salkar.communities_row.should == [@private_community.id] + ActiveSupport::JSON.decode(@salkar.communities_info).should == [{"c_id" => @private_community.id, "a" => "w"}] + end + + it "added to private community with default R access user should have R access" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.default_user_access = 'r' + @private_community.save + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @private_community.include_user?(@salkar).should == true + @private_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [@private_community.id] + ActiveSupport::JSON.decode(@salkar.communities_info).should == [{"c_id" => @private_community.id, "a" => "r"}] + end + + it "request invitation should be created (include_invitation_request?)" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.invitations_uids.should == "[#{@salkar.id}]" + @private_community.include_invitation_request?(@salkar).should == true + end + + it "request invitation should be created (include_invitation_request?)" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.reload + @private_community.include_invitation_request?(@salkar).should == false + @private_community.create_invitation_request @talisman + @private_community.reload + @private_community.include_invitation_request?(@salkar).should == false + end + + it "error should be excepted on try to check invitation request for public community" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @public_community.reload + expect { @public_community.include_invitation_request?(@salkar) }.to raise_error + end + + it "request invitation should be created" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.invitations_uids.should == "[#{@salkar.id}]" + end + + it "request invitation should not be created" do + expect { @community_1.create_invitation_request(@salkar) }.to raise_error + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.banned_ids = "[#{@talisman.id}]" + @private_community.save + expect { @private_community.create_invitation_request(@talisman) }.to raise_error + @private_community.create_invitation_request(@salkar) + expect { @private_community.create_invitation_request(@salkar) }.to raise_error + end + + it "user should not be added to public community cause he is banned" do + @community_1.banned_ids = "[#{@morozovm.id}]" + @community_1.save + expect { @morozovm.join @community_1 }.to raise_error + end + + it "error should be raised on trying to add to community user who already added to it" do + @salkar.join @community_1 + expect { @salkar.join @community_1 }.to raise_error + end + + it "invitation request should be rejected" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request(@salkar) + @private_community.reload + @private_community.include_invitation_request?(@salkar).should == true + @private_community.reject_invitation_request :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_invitation_request?(@salkar).should == false + end + + it "invitation request should not be rejected" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request(@salkar) + @private_community.add_user :user => @talisman #only for test + @private_community.reload + expect { @private_community.reject_invitation_request :user => @spy, :admin => @morozovm }.to raise_error + expect { @private_community.reject_invitation_request :user => @salkar }.to raise_error + expect { @private_community.reject_invitation_request :admin => @morozovm }.to raise_error + expect { @private_community.reject_invitation_request :user => @salkar, :admin => @talisman }.to raise_error + end + + it "invitation request should be accepted" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @private_community.include_user?(@salkar).should == true + @private_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @salkar.communities_row.should == [@private_community.id] + end + + it "invitation request should not be accepted" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.add_user :user => @talisman #only for test + @private_community.reload + + expect { @private_community.accept_invitation_request :user => @spy, :admin => @morozovm }.to raise_error + expect { @private_community.accept_invitation_request :user => @salkar }.to raise_error + expect { @private_community.accept_invitation_request :admin => @morozovm }.to raise_error + expect { @private_community.accept_invitation_request :user => @salkar, :admin => @talisman }.to raise_error + @private_community.add_user :user => @salkar #only for test + expect { @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm }.to raise_error + end + + it "user should be removed from private community" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.add_user :user => @salkar #only for test + @private_community.reload + @salkar.reload + + @private_community.include_user?(@salkar).should == true + @private_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @salkar.communities_row.should == [@private_community.id] + + @private_community.remove_user :admin => @morozovm, :user => @salkar + @private_community.reload + @salkar.reload + + @private_community.include_user?(@salkar).should == false + @private_community.users_ids.should == "[#{@morozovm.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [] + end + + it "admin should be removed from private community" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.add_user :user => @salkar #only for test + @private_community.add_admin :user => @salkar, :admin => @morozovm + @private_community.reload + @salkar.reload + + @private_community.include_user?(@salkar).should == true + @private_community.include_admin?(@salkar).should == true + @private_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + ActiveSupport::JSON.decode(@private_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should_not == nil + @salkar.communities_row.should == [@private_community.id] + + @private_community.remove_user :admin => @morozovm, :user => @salkar + @private_community.reload + @salkar.reload + + @private_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@private_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should == nil + @private_community.users_ids.should == "[#{@morozovm.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [] + end + + it "user should leave private community" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @salkar.leave @private_community + @salkar.reload + @private_community.reload + + @private_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@private_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should == nil + @private_community.users_ids.should == "[#{@morozovm.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [] + end + + it "user should be kicked from private community" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @morozovm.kick :user => @salkar, :from_community => @private_community + @salkar.reload + @private_community.reload + + @private_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@private_community.admins_info).index { |item| item['admin_id'] == @salkar.id }.should == nil + @private_community.users_ids.should == "[#{@morozovm.id}]" + @private_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [] + end + + it "user should not join private community" do + @private_community = Community.create :name => "Private Community", :owner_id => @morozovm.id, :public => false + expect { @salkar.join @private_community }.to raise_error + end + + it "user info should be deleted from community with W access if user is removed" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @public_community.reload + @morozovm.reload + @public_community.add_admin :user => @salkar, :admin => @morozovm + @salkar.reload + @public_community.reload + + @public_community.include_user?(@salkar).should == true + @public_community.include_admin?(@salkar).should == true + @public_community.users_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + @public_community.writers_ids.should == "[#{@morozovm.id},#{@salkar.id}]" + ActiveSupport::JSON.decode(@public_community.admins_info).index { |item| item['admin_id'] == @salkar.id }.should_not == nil + @salkar.communities_row.should == [@public_community.id] + + @morozovm.kick :user => @salkar, :from_community => @public_community + @salkar.reload + @public_community.reload + + @public_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@public_community.admins_info).index { |item| item['admin_id'] == @salkar.id }.should == nil + @public_community.users_ids.should == "[#{@morozovm.id}]" + @public_community.writers_ids.should == "[#{@morozovm.id}]" + @salkar.communities_row.should == [] + end + + it "user should be muted" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_muted_user?(@salkar).should == false + @public_community.mute_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == true + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_muted_user?(@salkar).should == false + @private_community.mute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == true + end + + it "user should not be muted" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @talisman.join @public_community + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + @talisman.reload + + expect { @public_community.mute_user :user => @spy, :admin => @morozovm }.to raise_error + expect { @public_community.mute_user :user => @salkar }.to raise_error + expect { @public_community.mute_user :admin => @morozovm }.to raise_error + expect { @public_community.mute_user :user => @salkar, :admin => @talisman }.to raise_error + expect { @public_community.mute_user :user => @morozovm, :admin => @morozovm }.to raise_error + @public_community.add_admin :user => @talisman, :admin => @morozovm + expect { @public_community.mute_user :user => @morozovm, :admin => @talisman }.to raise_error + @public_community.add_admin :user => @salkar, :admin => @morozovm + expect { @public_community.mute_user :user => @salkar, :admin => @talisman }.to raise_error + @public_community.mute_user :user => @salkar, :admin => @morozovm + expect { @public_community.mute_user :user => @salkar, :admin => @morozovm }.to raise_error + end + + it "user should be unmuted" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_muted_user?(@salkar).should == false + @public_community.mute_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == true + @public_community.unmute_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_muted_user?(@salkar).should == false + @private_community.mute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == true + @private_community.unmute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == false + end + + it "user should not be unmuted" do + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @talisman + @private_community.reload + @private_community.accept_invitation_request :user => @talisman, :admin => @morozovm + @talisman.reload + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @private_community.mute_user :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @morozovm.reload + @talisman.reload + + expect { @private_community.unmute_user :user => @spy, :admin => @morozovm }.to raise_error + + expect { @private_community.unmute_user :user => @salkar }.to raise_error + expect { @private_community.unmute_user :admin => @morozovm }.to raise_error + expect { @private_community.unmute_user :user => @salkar, :admin => @talisman }.to raise_error + end + + it "user should be unmuted when he is become admin" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_muted_user?(@salkar).should == false + @public_community.mute_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == true + @public_community.add_admin :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_muted_user?(@salkar).should == false + @private_community.mute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == true + @private_community.add_admin :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == false + end + + it "user should be banned" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_banned_user?(@salkar).should == false + @public_community.ban_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_banned_user?(@salkar).should == true + @public_community.include_user?(@salkar).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_banned_user?(@salkar).should == false + @private_community.ban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == true + @private_community.include_user?(@salkar).should == false + end + + it "admin should be banned" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @public_community.add_admin :user => @salkar, :admin => @morozovm + @salkar.reload + @public_community.reload + @morozovm.reload + + ActiveSupport::JSON.decode(@public_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should_not == nil + @public_community.include_banned_user?(@salkar).should == false + @public_community.ban_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_banned_user?(@salkar).should == true + @public_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@public_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should == nil + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @private_community.add_admin :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + ActiveSupport::JSON.decode(@private_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should_not == nil + @private_community.include_banned_user?(@salkar).should == false + @private_community.ban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == true + @private_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@private_community.admins_info).index{|item| item['admin_id'] == @salkar.id}.should == nil + end + + it "user with request invitation should be banned" do + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.include_banned_user?(@salkar).should == false + @private_community.ban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == true + @private_community.include_user?(@salkar).should == false + end + + it "user should not be banned" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @talisman.join @public_community + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + @talisman.reload + + expect { @public_community.ban_user :user => @spy, :admin => @morozovm }.to raise_error + expect { @public_community.ban_user :user => @salkar }.to raise_error + expect { @public_community.ban_user :admin => @morozovm }.to raise_error + expect { @public_community.ban_user :user => @salkar, :admin => @talisman }.to raise_error + expect { @public_community.ban_user :user => @morozovm, :admin => @morozovm }.to raise_error + @public_community.add_admin :user => @talisman, :admin => @morozovm + expect { @public_community.ban_user :user => @morozovm, :admin => @talisman }.to raise_error + @public_community.add_admin :user => @salkar, :admin => @morozovm + expect { @public_community.ban_user :user => @salkar, :admin => @talisman }.to raise_error + @public_community.ban_user :user => @salkar, :admin => @morozovm + expect { @public_community.ban_user :user => @salkar, :admin => @morozovm }.to raise_error + end + + it "user should be unbanned" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_banned_user?(@salkar).should == false + @public_community.ban_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_banned_user?(@salkar).should == true + @public_community.unban_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_banned_user?(@salkar).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_banned_user?(@salkar).should == false + @private_community.ban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == true + @private_community.unban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == false + end + + it "user should not be unbanned" do + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @talisman + @private_community.reload + @private_community.accept_invitation_request :user => @talisman, :admin => @morozovm + @talisman.reload + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @private_community.ban_user :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @morozovm.reload + @talisman.reload + + expect { @private_community.unban_user :user => @spy, :admin => @morozovm }.to raise_error + + expect { @private_community.unban_user :user => @salkar }.to raise_error + expect { @private_community.unban_user :admin => @morozovm }.to raise_error + expect { @private_community.unban_user :user => @salkar, :admin => @talisman }.to raise_error + end + + it "admin should ban another user" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @public_community.add_admin :user => @salkar, :admin => @morozovm + @salkar.reload + @public_community.reload + @morozovm.reload + + ActiveSupport::JSON.decode(@public_community.admins_info).index { |item| item['admin_id'] == @salkar.id }.should_not == nil + @public_community.include_banned_user?(@salkar).should == false + @morozovm.ban :user => @salkar, :in_community => @public_community + @public_community.reload + @public_community.include_banned_user?(@salkar).should == true + @public_community.include_user?(@salkar).should == false + ActiveSupport::JSON.decode(@public_community.admins_info).index { |item| item['admin_id'] == @salkar.id }.should == nil + end + + it "user should unban another user" do + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_banned_user?(@salkar).should == false + @private_community.ban_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_banned_user?(@salkar).should == true + @morozovm.unban :user => @salkar, :in_community => @private_community + @private_community.reload + @private_community.include_banned_user?(@salkar).should == false + end + + it "user should muted another user" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_muted_user?(@salkar).should == false + @morozovm.mute :user => @salkar, :in_community => @public_community + @public_community.reload + @public_community.include_muted_user?(@salkar).should == true + end + + it "user should unmute another user" do + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_muted_user?(@salkar).should == false + @private_community.mute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == true + @morozovm.unmute :user => @salkar, :in_community => @private_community + @private_community.reload + @private_community.include_muted_user?(@salkar).should == false + end + + it "muted user should not be able to add post to community" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_muted_user?(@salkar).should == false + @public_community.mute_user :user => @salkar, :admin => @morozovm + @public_community.reload + @public_community.include_muted_user?(@salkar).should == true + expect { @public_community.add_post :user => @salkar, :post => @salkar_post }.to raise_error + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_muted_user?(@salkar).should == false + @private_community.mute_user :user => @salkar, :admin => @morozovm + @private_community.reload + @private_community.include_muted_user?(@salkar).should == true + expect { @private_community.add_post :user => @salkar, :post => @salkar_post }.to raise_error + end + + it "user should be writer in community (include_writer?)" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_writer?(@morozovm).should == true + @public_community.include_writer?(@salkar).should == true + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_writer?(@morozovm).should == true + @private_community.include_writer?(@salkar).should == true + end + + it "user should not be writer in community (include_writer?)" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @public_community.default_user_access = 'r' + @public_community.save + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @public_community.include_writer?(@morozovm).should == true + @public_community.include_writer?(@salkar).should == false + @public_community.include_writer?(@talisman).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.default_user_access = 'r' + @private_community.save + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.include_writer?(@morozovm).should == true + @private_community.include_writer?(@salkar).should == false + @private_community.include_writer?(@talisman).should == false + end + + it "user should be able to send post to community (can_send_post_to_community?)" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @morozovm.can_send_post_to_community?(@public_community).should == true + @salkar.can_send_post_to_community?(@public_community).should == true + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @morozovm.reload + @private_community.reload + + @morozovm.can_send_post_to_community?(@private_community).should == true + @salkar.can_send_post_to_community?(@private_community).should == true + end + + it "user should be able to send post to community (can_send_post_to_community?)" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + + @morozovm.mute :user => @salkar, :in_community => @public_community + @public_community.reload + @salkar.can_send_post_to_community?(@public_community).should == false + @talisman.can_send_post_to_community?(@public_community).should == false + @public_community.default_user_access = 'r' + @public_community.save + @talisman.join @public_community + @public_community.reload + @talisman.reload + @talisman.can_send_post_to_community?(@public_community).should == false + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.default_user_access = 'r' + @private_community.save + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + + @morozovm.mute :user => @salkar, :in_community => @private_community + @private_community.reload + @salkar.can_send_post_to_community?(@private_community).should == false + @talisman.can_send_post_to_community?(@private_community).should == false + @private_community.default_user_access = 'r' + @private_community.save + @private_community.create_invitation_request @talisman + @private_community.reload + @private_community.accept_invitation_request :user => @talisman, :admin => @morozovm + @talisman.reload + @private_community.reload + @talisman.can_send_post_to_community?(@private_community).should == false + end + + it "post should be sended to community" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @salkar.join @public_community + @salkar.reload + @public_community.reload + @salkar.send_post_to_community :to_community => @public_community, :post => @salkar_post + @salkar_post.communities_row.should == [@public_community.id] + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + @salkar.send_post_to_community :to_community => @private_community, :post => @salkar_post + @salkar_post.communities_row.should == [@public_community.id, @private_community.id] + end + + it "post should not be sended to community" do + @public_community_r = Community.create :name => "Community", :owner_id => @morozovm.id + @talisman.join @public_community_r + @public_community_r.default_user_access = 'r' + @public_community_r.save + @salkar.join @public_community_r + @salkar.reload + @public_community_r.reload + expect {@salkar.send_post_to_community :to_community => @public_community_r, :post => @salkar_post}.to raise_error + @salkar_post.communities_row.should == [] + + @private_community = Community.create :name => "Community", :owner_id => @morozovm.id, :public => false + + @private_community.create_invitation_request @talisman + @private_community.reload + @private_community.accept_invitation_request :user => @talisman, :admin => @morozovm + @salkar.reload + @private_community.reload + + @private_community.default_user_access = 'r' + @private_community.save + @private_community.create_invitation_request @salkar + @private_community.reload + @private_community.accept_invitation_request :user => @salkar, :admin => @morozovm + @salkar.reload + @private_community.reload + expect {@salkar.send_post_to_community :to_community => @private_community, :post => @salkar_post}.to raise_error + @salkar_post.communities_row.should == [] + + @spy_post = @spy.posts.create :body => "spy_post_test_body" + expect {@spy.send_post_to_community :to_community => @public_community_r, :post => @spy_post}.to raise_error + expect {@spy.send_post_to_community :to_community => @private_community, :post => @spy_post}.to raise_error + + @talisman_post = @talisman.posts.create :body => "morozovm_post_test_body" + @morozovm.mute :user => @talisman, :in_community => @public_community_r + @morozovm.mute :user => @talisman, :in_community => @private_community + @public_community_r.reload + @private_community.reload + expect {@talisman.send_post_to_community :to_community => @public_community_r, :post => @talisman_post}.to raise_error + expect {@talisman.send_post_to_community :to_community => @private_community, :post => @talisman_post}.to raise_error + end + + it "admin should be a writer" do + @public_community = Community.create :name => "Community", :owner_id => @morozovm.id + @public_community.default_user_access = 'r' + @public_community.save + @salkar.join @public_community + @salkar.reload + @public_community.reload + @morozovm.reload + @public_community.include_writer?(@salkar).should == false + + @public_community.add_admin :admin => @morozovm, :user => @salkar + @public_community.reload + @salkar.reload + @public_community.include_writer?(@salkar).should == true end end \ No newline at end of file