Merge branch 'next-minor' into develop
This commit is contained in:
commit
66175f6908
47 changed files with 272 additions and 593 deletions
|
|
@ -12,13 +12,18 @@
|
|||
# 0.7.5.0
|
||||
|
||||
## Refactor
|
||||
* Remove the 'make contacts in this aspect visible to each other' option [#7769](https://github.com/diaspora/diaspora/pull/7769)
|
||||
* Remove the requirement to have at least two users to disable the /podmin redirect [#7783](https://github.com/diaspora/diaspora/pull/7783)
|
||||
|
||||
## Bug fixes
|
||||
* Prefill conversation form on contacts page only with mutual contacts [#7744](https://github.com/diaspora/diaspora/pull/7744)
|
||||
* Fix profiles sometimes not loading properly in background tabs [#7740](https://github.com/diaspora/diaspora/pull/7740)
|
||||
* Show error message when creating posts with invalid aspects [#7742](https://github.com/diaspora/diaspora/pull/7742)
|
||||
* Fix mention syntax backport for two immediately consecutive mentions [#7777](https://github.com/diaspora/diaspora/pull/7777)
|
||||
* Fix link to 'make yourself an admin' [#7783](https://github.com/diaspora/diaspora/pull/7783)
|
||||
|
||||
## Features
|
||||
* Make public stream accessible for logged out users [#7775](https://github.com/diaspora/diaspora/pull/7775)
|
||||
|
||||
# 0.7.4.1
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
el: "#contacts_container",
|
||||
|
||||
events: {
|
||||
"click #contacts_visibility_toggle" : "toggleContactVisibility",
|
||||
"click #chat_privilege_toggle" : "toggleChatPrivilege",
|
||||
"click #change_aspect_name" : "showAspectNameForm",
|
||||
"click .conversation_button": "showMessageModal",
|
||||
|
|
@ -13,7 +12,6 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
},
|
||||
|
||||
initialize: function(opts) {
|
||||
this.visibilityToggle = $("#contacts_visibility_toggle i");
|
||||
this.chatToggle = $("#chat_privilege_toggle i");
|
||||
this.stream = opts.stream;
|
||||
this.stream.render();
|
||||
|
|
@ -45,25 +43,6 @@ app.pages.Contacts = Backbone.View.extend({
|
|||
}
|
||||
},
|
||||
|
||||
toggleContactVisibility: function() {
|
||||
if (this.visibilityToggle.hasClass("entypo-lock-open")) {
|
||||
this.visibilityToggle.removeClass("entypo-lock-open")
|
||||
.addClass("entypo-lock")
|
||||
.tooltip("destroy")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_list_is_not_visible"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
}
|
||||
else {
|
||||
this.visibilityToggle.removeClass("entypo-lock")
|
||||
.addClass("entypo-lock-open")
|
||||
.tooltip("destroy")
|
||||
.removeAttr("data-original-title")
|
||||
.attr("title", Diaspora.I18n.t("contacts.aspect_list_is_visible"))
|
||||
.tooltip({"placement": "bottom"});
|
||||
}
|
||||
},
|
||||
|
||||
showAspectNameForm: function() {
|
||||
$(".header > h3").hide();
|
||||
var aspectName = $.trim($(".header h3 #aspect_name").text());
|
||||
|
|
|
|||
|
|
@ -24,9 +24,6 @@ app.pages.Profile = app.views.Base.extend({
|
|||
if (app.hasPreload("photos_count")) {
|
||||
this.photos = app.parsePreload("photos_count");
|
||||
}
|
||||
if (app.hasPreload("contacts_count")) {
|
||||
this.contacts = app.parsePreload("contacts_count");
|
||||
}
|
||||
|
||||
this.streamCollection = _.has(opts, "streamCollection") ? opts.streamCollection : null;
|
||||
this.streamViewClass = _.has(opts, "streamView") ? opts.streamView : null;
|
||||
|
|
@ -70,7 +67,6 @@ app.pages.Profile = app.views.Base.extend({
|
|||
return new app.views.ProfileHeader({
|
||||
model: this.model,
|
||||
photos: this.photos,
|
||||
contacts: this.contacts
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ app.Router = Backbone.Router.extend({
|
|||
"p/:id(/)": "singlePost",
|
||||
"people(/)": "peopleSearch",
|
||||
"people/:id(/)": "profile",
|
||||
"people/:id/contacts(/)": "profile",
|
||||
"people/:id/photos(/)": "photos",
|
||||
"posts/:id(/)": "singlePost",
|
||||
"profile/edit(/)": "settings",
|
||||
|
|
|
|||
|
|
@ -21,10 +21,6 @@ app.views.AspectCreate = app.views.Base.extend({
|
|||
});
|
||||
},
|
||||
|
||||
_contactsVisible: function() {
|
||||
return this.$("#aspect_contacts_visible").is(":checked");
|
||||
},
|
||||
|
||||
_name: function() {
|
||||
return this.$("#aspect_name").val();
|
||||
},
|
||||
|
|
@ -71,8 +67,7 @@ app.views.AspectCreate = app.views.Base.extend({
|
|||
|
||||
app.aspects.create({
|
||||
"person_id": this._personId || null,
|
||||
"name": this._name(),
|
||||
"contacts_visible": this._contactsVisible()
|
||||
"name": this._name()
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ app.views.ProfileHeader = app.views.Base.extend({
|
|||
|
||||
initialize: function(opts) {
|
||||
this.photos = _.has(opts, 'photos') ? opts.photos : null;
|
||||
this.contacts = _.has(opts, 'contacts') ? opts.contacts : null;
|
||||
this.model.on("change", this.render, this);
|
||||
$("#mentionModal").on("modal:loaded", this.mentionModalLoaded.bind(this));
|
||||
$("#mentionModal").on("hidden.bs.modal", this.mentionModalHidden);
|
||||
|
|
@ -24,13 +23,11 @@ app.views.ProfileHeader = app.views.Base.extend({
|
|||
return _.extend({}, this.defaultPresenter(), {
|
||||
show_profile_btns: this._shouldShowProfileBtns(),
|
||||
show_photos: this._shouldShowPhotos(),
|
||||
show_contacts: this._shouldShowContacts(),
|
||||
is_blocked: this.model.isBlocked(),
|
||||
is_sharing: this.model.isSharing(),
|
||||
is_receiving: this.model.isReceiving(),
|
||||
is_mutual: this.model.isMutual(),
|
||||
has_tags: this._hasTags(),
|
||||
contacts: this.contacts,
|
||||
photos: this.photos
|
||||
});
|
||||
},
|
||||
|
|
@ -51,10 +48,6 @@ app.views.ProfileHeader = app.views.Base.extend({
|
|||
return (this.photos && this.photos > 0);
|
||||
},
|
||||
|
||||
_shouldShowContacts: function() {
|
||||
return (this.contacts && this.contacts > 0);
|
||||
},
|
||||
|
||||
showMentionModal: function() {
|
||||
app.helpers.showModal("#mentionModal");
|
||||
},
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ app.views.Stream = app.views.InfScroll.extend({
|
|||
|
||||
markNavSelected : function() {
|
||||
var activeStream = Backbone.history.fragment;
|
||||
var streamSelection = $("#stream_selection");
|
||||
var streamSelection = $("#stream-selection");
|
||||
streamSelection.find("[data-stream]").removeClass("selected");
|
||||
streamSelection.find("[data-stream='" + activeStream + "']").addClass("selected");
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
.public-stream {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.main-stream-publisher {
|
||||
margin-top: 20px;
|
||||
padding: 0;
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@
|
|||
<input id="aspect_name" class="input-block-level form-control" maxlength=20 type="text"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label for="aspect_contacts_visible" class="checkbox inline">
|
||||
<input id="aspect_contacts_visible" type="checkbox"> {{ t "aspects.make_aspect_list_visible" }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</fieldset>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<span class="section-selected">{{ title_account_and_data_management }}</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="section-unselected faq-link" data-section="aspects" data-items="what_is_an_aspect who_sees_post contacts_know_aspect person_multiple_aspects contacts_visible remove_notification change_aspect_of_post post_multiple_aspects restrict_posts_i_see rename_aspect delete_aspect">{{ title_aspects }}</a>
|
||||
<a href="#" class="section-unselected faq-link" data-section="aspects" data-items="what_is_an_aspect who_sees_post contacts_know_aspect person_multiple_aspects remove_notification change_aspect_of_post post_multiple_aspects restrict_posts_i_see rename_aspect delete_aspect">{{ title_aspects }}</a>
|
||||
<span class="section-selected">{{ title_aspects }}</span>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -82,22 +82,5 @@
|
|||
</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#if show_contacts}}
|
||||
<li {{#isCurrentPage 'personContacts' guid}} class="active" {{/isCurrentPage}}>
|
||||
{{#if is_own_profile}}
|
||||
<a href="{{urlTo 'contacts'}}" id="contacts_link">
|
||||
<i class="entypo-users"></i>
|
||||
{{t 'profile.contacts'}}
|
||||
<div class="badge badge-default">{{contacts}}</div>
|
||||
</a>
|
||||
{{else}}
|
||||
<a href="{{urlTo 'personContacts' guid}}" id="contacts_link">
|
||||
<i class="entypo-users"></i>
|
||||
{{t 'profile.contacts'}}
|
||||
<div class="badge badge-default">{{contacts}}</div>
|
||||
</a>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -84,18 +84,6 @@ class AspectsController < ApplicationController
|
|||
head :no_content
|
||||
end
|
||||
|
||||
def toggle_contact_visibility
|
||||
@aspect = current_user.aspects.where(:id => params[:aspect_id]).first
|
||||
|
||||
if @aspect.contacts_visible?
|
||||
@aspect.contacts_visible = false
|
||||
else
|
||||
@aspect.contacts_visible = true
|
||||
end
|
||||
@aspect.save
|
||||
head :no_content
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def connect_person_to_aspect(aspecting_person_id)
|
||||
|
|
@ -109,6 +97,6 @@ class AspectsController < ApplicationController
|
|||
end
|
||||
|
||||
def aspect_params
|
||||
params.require(:aspect).permit(:name, :contacts_visible, :chat_enabled, :order_id)
|
||||
params.require(:aspect).permit(:name, :chat_enabled, :order_id)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class HomeController < ApplicationController
|
|||
partial_dir.join("_show.html.erb").exist? ||
|
||||
partial_dir.join("_show.haml").exist?
|
||||
render :show
|
||||
elsif User.count > 1 && Role.where(name: "admin").any?
|
||||
elsif Role.admins.any?
|
||||
render :default
|
||||
else
|
||||
redirect_to podmin_path
|
||||
|
|
|
|||
|
|
@ -77,7 +77,6 @@ class PeopleController < ApplicationController
|
|||
end
|
||||
gon.preloads[:person] = @presenter.as_json
|
||||
gon.preloads[:photos_count] = Photo.visible(current_user, @person).count(:all)
|
||||
gon.preloads[:contacts_count] = Contact.contact_contacts_for(current_user, @person).count(:all)
|
||||
respond_with @presenter, layout: "with_header"
|
||||
end
|
||||
|
||||
|
|
@ -123,30 +122,6 @@ class PeopleController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def contacts
|
||||
respond_to do |format|
|
||||
format.json { head :not_acceptable }
|
||||
|
||||
format.any do
|
||||
@person = Person.find_by_guid(params[:person_id])
|
||||
|
||||
if @person
|
||||
@contact = current_user.contact_for(@person)
|
||||
@contacts_of_contact = Contact.contact_contacts_for(current_user, @person)
|
||||
gon.preloads[:person] = PersonPresenter.new(@person, current_user).as_json
|
||||
gon.preloads[:photos_count] = Photo.visible(current_user, @person).count(:all)
|
||||
gon.preloads[:contacts_count] = @contacts_of_contact.count(:all)
|
||||
@contacts_of_contact = @contacts_of_contact.paginate(page: params[:page], per_page: (params[:limit] || 15))
|
||||
@hashes = hashes_for_people @contacts_of_contact, @aspects
|
||||
respond_with @person, layout: "with_header"
|
||||
else
|
||||
flash[:error] = I18n.t "people.show.does_not_exist"
|
||||
redirect_to people_path
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_person
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ class PhotosController < ApplicationController
|
|||
format.all do
|
||||
gon.preloads[:person] = @presenter.as_json
|
||||
gon.preloads[:photos_count] = Photo.visible(current_user, @person).count(:all)
|
||||
gon.preloads[:contacts_count] = Contact.contact_contacts_for(current_user, @person).count(:all)
|
||||
render "people/show", layout: "with_header"
|
||||
end
|
||||
format.mobile { render "people/show" }
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
# the COPYRIGHT file.
|
||||
|
||||
class StreamsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :authenticate_user!, except: :public
|
||||
before_action :save_selected_aspects, :only => :aspects
|
||||
|
||||
layout proc { request.format == :mobile ? "application" : "with_header" }
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ module ApplicationHelper
|
|||
current_user.services.size == AppConfig.configured_services.size
|
||||
end
|
||||
|
||||
def service_unconnected?(service)
|
||||
AppConfig.show_service?(service, current_user) && current_user.services.none? {|x| x.provider == service }
|
||||
end
|
||||
|
||||
def popover_with_close_html(without_close_html)
|
||||
without_close_html + link_to('×'.html_safe, "#", :class => 'close')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -47,17 +47,6 @@ class Contact < ApplicationRecord
|
|||
).destroy_all
|
||||
end
|
||||
|
||||
def contacts
|
||||
people = Person.arel_table
|
||||
incoming_aspects = Aspect.where(
|
||||
:user_id => self.person.owner_id,
|
||||
:contacts_visible => true).joins(:contacts).where(
|
||||
:contacts => {:person_id => self.user.person_id}).select('aspects.id')
|
||||
incoming_aspect_ids = incoming_aspects.map{|a| a.id}
|
||||
similar_contacts = Person.joins(:contacts => :aspect_memberships).where(
|
||||
:aspect_memberships => {:aspect_id => incoming_aspect_ids}).where(people[:id].not_eq(self.user.person.id)).select('DISTINCT people.*')
|
||||
end
|
||||
|
||||
def mutual?
|
||||
sharing && receiving
|
||||
end
|
||||
|
|
@ -72,17 +61,6 @@ class Contact < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
def self.contact_contacts_for(user, person)
|
||||
return none unless user
|
||||
|
||||
if person == user.person
|
||||
user.contact_people
|
||||
else
|
||||
contact = user.contact_for(person)
|
||||
contact.try(:contacts) || none
|
||||
end
|
||||
end
|
||||
|
||||
# Follows back if user setting is set so
|
||||
def receive(_recipient_user_ids)
|
||||
user.share_with(person, user.auto_follow_back_aspect) if user.auto_follow_back && !receiving
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
module Export
|
||||
class AspectSerializer < ActiveModel::Serializer
|
||||
attributes :name,
|
||||
:contacts_visible,
|
||||
:chat_enabled
|
||||
attributes :name, :chat_enabled
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,12 +2,13 @@
|
|||
-# licensed under the Affero General Public License version 3 or later. See
|
||||
-# the COPYRIGHT file.
|
||||
|
||||
- if user_signed_in?
|
||||
.container-fluid.main-stream-publisher
|
||||
.pull-left.hidden-xs
|
||||
= owner_image_link
|
||||
= render "publisher/publisher", publisher_aspects_for(stream)
|
||||
|
||||
- if current_user.getting_started?
|
||||
- if current_user&.getting_started?
|
||||
.stream#main-stream{:title => popover_with_close_html("3. #{t('.stay_updated')}"),
|
||||
"data-content" => t(".stay_updated_explanation")}
|
||||
- else
|
||||
|
|
@ -17,5 +18,5 @@
|
|||
.loader.hidden
|
||||
.spinner
|
||||
|
||||
- if current_user.contacts.size < 2
|
||||
- if current_user && current_user.contacts.size < 2
|
||||
= render 'aspects/no_contacts_message'
|
||||
|
|
|
|||
|
|
@ -4,12 +4,6 @@
|
|||
- if @aspect.contacts.size > 0 && @aspect.contacts.size < 20
|
||||
= start_a_conversation_link(@aspect, @aspect.contacts.size)
|
||||
|
||||
= link_to aspect_toggle_contact_visibility_path(@aspect), id: "contacts_visibility_toggle", class: "contacts_button", method: :put, remote: true do
|
||||
-if @aspect.contacts_visible?
|
||||
%i.entypo-lock-open.contacts-header-icon{title: t("aspects.edit.aspect_list_is_visible")}
|
||||
-else
|
||||
%i.entypo-lock.contacts-header-icon{title: t("aspects.edit.aspect_list_is_not_visible")}
|
||||
|
||||
-if AppConfig.chat.enabled?
|
||||
= link_to aspect_toggle_chat_privilege_path(@aspect), id: "chat_privilege_toggle", class: "contacts_button", method: :put, remote: true do
|
||||
-if @aspect.chat_enabled?
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
%span.entypo-key
|
||||
= t(".make_yourself_an_admin")
|
||||
!= t(".make_yourself_an_admin_info",
|
||||
wiki: link_to("diaspora* wiki", "https://wiki.diasporafoundation.org/FAQ_for_pod_maintainers#What_are_roles_and_how_do_I_use_them.3F_.2F_Make_yourself_an_admin"),
|
||||
wiki: link_to("diaspora* wiki", "https://wiki.diasporafoundation.org/Permalink:FAQ_-_Add_admin"),
|
||||
admin_dashboard: link_to(t("javascripts.header.admin"), admin_dashboard_path))
|
||||
|
||||
.row
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
- content_for :page_title do
|
||||
= @person.name
|
||||
|
||||
.container-fluid#profile_container
|
||||
.row
|
||||
.col-md-3
|
||||
.sidebar.profile-sidebar#profile
|
||||
-# here be JS
|
||||
|
||||
.col-md-9
|
||||
.profile_header
|
||||
-# more JS
|
||||
|
||||
.stream-container
|
||||
#people-stream.stream
|
||||
- @hashes.each do |hash|
|
||||
= render partial: 'people/person', locals: hash
|
||||
= will_paginate @contacts_of_contact, renderer: WillPaginate::ActionView::BootstrapLinkRenderer
|
||||
|
||||
-if user_signed_in? && @person
|
||||
#new_status_message_pane
|
||||
= render 'shared/modal',
|
||||
path: new_status_message_path(:person_id => @person.id),
|
||||
title: t('status_messages.new.mentioning', person: @person.name),
|
||||
id: 'mentionModal'
|
||||
|
||||
-if @contact
|
||||
.conversations-form-container#new_conversation_pane
|
||||
= render 'shared/modal',
|
||||
path: new_conversation_path(:contact_id => @contact.id, name: @contact.person.name, modal: true),
|
||||
title: t('conversations.index.new_conversation'),
|
||||
id: 'conversationModal'
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
= javascript_include_tag :jsxc, id: 'jsxc',
|
||||
data: { endpoint: get_bosh_endpoint }
|
||||
|
||||
- if current_user.getting_started?
|
||||
- if current_user&.getting_started?
|
||||
#welcome-to-diaspora
|
||||
.container-fluid
|
||||
.row
|
||||
|
|
@ -22,9 +22,10 @@
|
|||
|
||||
.container-fluid
|
||||
.row
|
||||
- if user_signed_in?
|
||||
.col-md-3
|
||||
.sidebar.left-navbar
|
||||
%ul#stream_selection
|
||||
%ul#stream-selection
|
||||
%li{data: {stream: "stream"}}
|
||||
= link_to t("streams.multi.title"), stream_path, rel: "backbone", class: "hoverable"
|
||||
%li.nested-list.my-activity{data: {stream: "activity"}}
|
||||
|
|
@ -120,8 +121,7 @@
|
|||
|
||||
.right-service-icons
|
||||
- AppConfig.configured_services.each do |service|
|
||||
- if AppConfig.show_service?(service, current_user)
|
||||
- unless current_user.services.any? {|x| x.provider == service }
|
||||
- if service_unconnected?(service)
|
||||
= link_to(content_tag(:div, nil,
|
||||
class: "social-media-logos-#{service.to_s.downcase}-24x24",
|
||||
title: service.to_s.titleize), "/auth/#{service}")
|
||||
|
|
@ -175,6 +175,8 @@
|
|||
.powered-by-diaspora.text-center
|
||||
= link_to t("layouts.application.powered_by"), "https://diasporafoundation.org"
|
||||
|
||||
.col-md-9
|
||||
.col-md-9{class: ("center-block public-stream" unless user_signed_in?)}
|
||||
.stream-container#aspect-stream-container
|
||||
- unless user_signed_in?
|
||||
%h2= @stream.title
|
||||
= render "aspects/aspect_stream", stream: @stream
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
-# licensed under the Affero General Public License version 3 or later. See
|
||||
-# the COPYRIGHT file.
|
||||
|
||||
- unless user_signed_in?
|
||||
%h1= @stream.title
|
||||
|
||||
#main-stream.stream
|
||||
= render 'shared/stream', posts: @stream.stream_posts
|
||||
= render 'shared/stream_more_button'
|
||||
|
|
|
|||
|
|
@ -369,8 +369,6 @@ en:
|
|||
contacts_know_aspect_a: "No. They cannot see the name of the aspect under any circumstances."
|
||||
person_multiple_aspects_q: "Can I add a person to multiple aspects?"
|
||||
person_multiple_aspects_a: "Yes. Go to your contacts page and click on “My contacts”. For each contact you can use the menu on the right to add them to (or remove them from) as many aspects as you want. Or you can add them to a new aspect (or remove them from an aspect) by clicking the aspect selector button on their profile page. Or you can even just move the pointer over their name where you see it in the stream, and a “hovercard” will appear. You can change the aspects they are in right there."
|
||||
contacts_visible_q: "What does “make contacts in this aspect visible to each other” mean?"
|
||||
contacts_visible_a: "If you check this option then contacts from that aspect will be able to see who else is in it, in the “Contacts” tab on your profile page. (At the moment, only your contacts who are on the same pod as you will be able to see the “Contacts” tab on your profile.) It’s best to select this option only if the contacts in that aspect all know each other, for example if the aspect is for a club or society you belong to. They still won’t be able to see what the aspect is called."
|
||||
remove_notification_q: "If I remove someone from an aspect, or all of my aspects, are they notified of this?"
|
||||
remove_notification_a: "No. They are also not notified if you add them to more aspects, when you are already sharing with them."
|
||||
change_aspect_of_post_q: "Once I have posted something, can I change the aspect(s) that can see it?"
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ en:
|
|||
other: "The connection test returned an error for <%= count %> pods."
|
||||
|
||||
aspects:
|
||||
make_aspect_list_visible: "Make contacts in this aspect visible to each other?"
|
||||
name: "Name"
|
||||
create:
|
||||
add_a_new_aspect: "Add a new aspect"
|
||||
|
|
@ -124,8 +123,6 @@ en:
|
|||
add_contact: "Add contact"
|
||||
aspect_chat_is_enabled: "Contacts in this aspect are able to chat with you."
|
||||
aspect_chat_is_not_enabled: "Contacts in this aspect are not able to chat with you."
|
||||
aspect_list_is_visible: "Contacts in this aspect are able to see each other."
|
||||
aspect_list_is_not_visible: "Contacts in this aspect are not able to see each other."
|
||||
remove_contact: "Remove contact"
|
||||
error_add: "Couldn’t add <%= name %> to the aspect :("
|
||||
error_remove: "Couldn’t remove <%= name %> from the aspect :("
|
||||
|
|
@ -236,7 +233,6 @@ en:
|
|||
gender: "Gender"
|
||||
born: "Birthday"
|
||||
photos: "Photos"
|
||||
contacts: "Contacts"
|
||||
posts: "Posts"
|
||||
|
||||
conversation:
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ Rails.application.routes.draw do
|
|||
get "aspects" => "streams#aspects", :as => "aspects_stream"
|
||||
|
||||
resources :aspects, except: %i(index new edit) do
|
||||
put :toggle_contact_visibility
|
||||
put :toggle_chat_privilege
|
||||
collection do
|
||||
put "order" => :update_order
|
||||
|
|
@ -165,7 +164,6 @@ Rails.application.routes.draw do
|
|||
resources :people, only: %i(show index) do
|
||||
resources :status_messages, only: %i(new create)
|
||||
resources :photos, except: %i(new update)
|
||||
get :contacts
|
||||
get :stream
|
||||
get :hovercard
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RemoveContactsVisibleFromAspects < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
remove_index :aspects, column: %i[user_id contacts_visible], name: :index_aspects_on_user_id_and_contacts_visible
|
||||
remove_column :aspects, :contacts_visible, :boolean, default: true, null: false
|
||||
end
|
||||
end
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
@javascript
|
||||
Feature: show contacts
|
||||
|
||||
Background:
|
||||
Given following users exist:
|
||||
| username | email |
|
||||
| Bob Jones | bob@bob.bob |
|
||||
| Alice Smith | alice@alice.alice |
|
||||
| Robert Grimm | robert@grimm.grimm |
|
||||
And I sign in as "robert@grimm.grimm"
|
||||
And I am on "alice@alice.alice"'s page
|
||||
And I add the person to my "Unicorns" aspect
|
||||
|
||||
Scenario: see own contacts on profile
|
||||
When I am on "robert@grimm.grimm"'s page
|
||||
And I press the first "#contacts_link"
|
||||
Then I should be on the contacts page
|
||||
|
||||
Scenario: see contacts of a visible aspect list
|
||||
When I am on "bob@bob.bob"'s page
|
||||
And I add the person to my "Unicorns" aspect
|
||||
And I sign out
|
||||
And I sign in as "alice@alice.alice"
|
||||
And I am on "robert@grimm.grimm"'s page
|
||||
Then I should see "Contacts" within "#profile-horizontal-bar"
|
||||
|
||||
When I press the first "#contacts_link"
|
||||
Then I should see "Bob Jones" within "#people-stream .media-body"
|
||||
When I add the person to my "Besties" aspect within "#people-stream"
|
||||
Then I should see a flash message containing "You have started sharing with Bob Jones!"
|
||||
|
||||
Scenario: don't see contacts of an invisible aspect list
|
||||
When I am on "bob@bob.bob"'s page
|
||||
And I add the person to my "Unicorns" aspect
|
||||
And I am on the contacts page
|
||||
And I follow "Unicorns"
|
||||
And I press the first "a#contacts_visibility_toggle"
|
||||
And I sign out
|
||||
|
||||
And I sign in as "alice@alice.alice"
|
||||
And I am on "robert@grimm.grimm"'s page
|
||||
Then I should not see "Contacts" within "#profile-horizontal-bar"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Keyboard navigation
|
|||
Scenario: navigate downwards after changing the stream
|
||||
When I go to the activity stream page
|
||||
And I click on selector "[data-stream='stream'] a"
|
||||
Then I should see "Stream" within "#stream_selection .selected"
|
||||
Then I should see "Stream" within "#stream-selection .selected"
|
||||
|
||||
When I press the "J" key somewhere
|
||||
Then post 1 should be highlighted
|
||||
|
|
|
|||
|
|
@ -12,3 +12,7 @@ Feature: The public stream
|
|||
When I sign in as "alice@alice.alice"
|
||||
And I am on the public stream page
|
||||
Then I should see "Bob’s public post"
|
||||
|
||||
Scenario: seeing public posts as a logged out user
|
||||
When I am on the public stream page
|
||||
Then I should see "Bob’s public post"
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ module Diaspora::Mentionable
|
|||
end
|
||||
|
||||
# Regex to find mentions with new syntax, only used for backporting to old syntax
|
||||
NEW_SYNTAX_REGEX = /@\{[^ ]+\}/
|
||||
NEW_SYNTAX_REGEX = /@\{[^\} ]+\}/
|
||||
|
||||
# replaces new syntax with old syntax, to be compatible with old pods
|
||||
# @deprecated remove when most of the posts can handle the new syntax
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"contacts_visible": { "type": "boolean" },
|
||||
"chat_enabled": { "type": "boolean" }
|
||||
},
|
||||
"required": [
|
||||
|
|
|
|||
|
|
@ -156,22 +156,4 @@ describe AspectsController, :type => :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#toggle_contact_visibility" do
|
||||
it 'sets contacts visible' do
|
||||
@alices_aspect_1.contacts_visible = false
|
||||
@alices_aspect_1.save
|
||||
|
||||
get :toggle_contact_visibility, xhr: true, params: {aspect_id: @alices_aspect_1.id}
|
||||
expect(@alices_aspect_1.reload.contacts_visible).to be true
|
||||
end
|
||||
|
||||
it 'sets contacts hidden' do
|
||||
@alices_aspect_1.contacts_visible = true
|
||||
@alices_aspect_1.save
|
||||
|
||||
get :toggle_contact_visibility, xhr: true, params: {aspect_id: @alices_aspect_1.id}
|
||||
expect(@alices_aspect_1.reload.contacts_visible).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,31 +6,14 @@
|
|||
|
||||
describe HomeController, type: :controller do
|
||||
describe "#show" do
|
||||
it "does not redirect for :html if there are at least 2 users and an admin" do
|
||||
allow(User).to receive(:count).and_return(2)
|
||||
allow(Role).to receive_message_chain(:where, :any?).and_return(true)
|
||||
allow(Role).to receive_message_chain(:where, :exists?).and_return(true)
|
||||
it "does not redirect for :html if there is at least one admin" do
|
||||
expect(Role).to receive_message_chain(:admins, :any?).and_return(true)
|
||||
get :show
|
||||
expect(response).not_to be_redirect
|
||||
end
|
||||
|
||||
it "redirects to the podmin page for :html if there are less than 2 users" do
|
||||
allow(User).to receive(:count).and_return(1)
|
||||
allow(Role).to receive_message_chain(:where, :any?).and_return(true)
|
||||
get :show
|
||||
expect(response).to redirect_to(podmin_path)
|
||||
end
|
||||
|
||||
it "redirects to the podmin page for :html if there is no admin" do
|
||||
allow(User).to receive(:count).and_return(2)
|
||||
allow(Role).to receive_message_chain(:where, :any?).and_return(false)
|
||||
get :show
|
||||
expect(response).to redirect_to(podmin_path)
|
||||
end
|
||||
|
||||
it "redirects to the podmin page for :html if there are less than 2 users and no admin" do
|
||||
allow(User).to receive(:count).and_return(0)
|
||||
allow(Role).to receive_message_chain(:where, :any?).and_return(false)
|
||||
expect(Role).to receive_message_chain(:admins, :any?).and_return(false)
|
||||
get :show
|
||||
expect(response).to redirect_to(podmin_path)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -580,40 +580,6 @@ describe PeopleController, :type => :controller do
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
describe '#contacts' do
|
||||
it 'assigns the contacts of a person' do
|
||||
contact = alice.contact_for(bob.person)
|
||||
contacts = contact.contacts
|
||||
get :contacts, params: {person_id: bob.person.to_param}
|
||||
expect(assigns(:contacts_of_contact).to_a).to eq(contacts.to_a)
|
||||
expect(response).to be_success
|
||||
end
|
||||
|
||||
it 'shows an error when invalid person id' do
|
||||
get :contacts, params: {person_id: "foo"}
|
||||
expect(flash[:error]).to be_present
|
||||
expect(response).to redirect_to people_path
|
||||
end
|
||||
|
||||
it "displays the correct number of photos" do
|
||||
16.times do |i|
|
||||
eve.post(:photo, :user_file => uploaded_photo, :to => eve.aspects.first.id, :public => true)
|
||||
end
|
||||
get :contacts, params: {person_id: eve.person.to_param}
|
||||
expect(response.body).to include ',"photos_count":16'
|
||||
|
||||
eve.post(:photo, :user_file => uploaded_photo, :to => eve.aspects.first.id, :public => false)
|
||||
get :contacts, params: {person_id: eve.person.to_param}
|
||||
expect(response.body).to include ',"photos_count":16' # eve is not sharing with alice
|
||||
end
|
||||
|
||||
it "returns a 406 for json format" do
|
||||
get :contacts, params: {person_id: "foo"}, format: :json
|
||||
expect(response.code).to eq("406")
|
||||
end
|
||||
end
|
||||
|
||||
describe '#diaspora_id?' do
|
||||
it 'returns true for pods on urls' do
|
||||
expect(@controller.send(:diaspora_id?, "ilya_123@pod.geraspora.de")).to be true
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
describe StreamsController, :type => :controller do
|
||||
include_context :gon
|
||||
|
||||
context "with a logged in user" do
|
||||
before do
|
||||
sign_in alice
|
||||
end
|
||||
|
|
@ -18,14 +19,14 @@ describe StreamsController, :type => :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#multi' do
|
||||
it 'succeeds' do
|
||||
describe "#multi" do
|
||||
it "succeeds" do
|
||||
get :multi
|
||||
expect(response).to be_success
|
||||
end
|
||||
|
||||
it 'succeeds on mobile' do
|
||||
get :multi, :format => :mobile
|
||||
it "succeeds on mobile" do
|
||||
get :multi, format: :mobile
|
||||
expect(response).to be_success
|
||||
end
|
||||
|
||||
|
|
@ -43,15 +44,15 @@ describe StreamsController, :type => :controller do
|
|||
end
|
||||
|
||||
streams = {
|
||||
:liked => Stream::Likes,
|
||||
:mentioned => Stream::Mention,
|
||||
:followed_tags => Stream::FollowedTag,
|
||||
:activity => Stream::Activity
|
||||
liked: Stream::Likes,
|
||||
mentioned: Stream::Mention,
|
||||
followed_tags: Stream::FollowedTag,
|
||||
activity: Stream::Activity
|
||||
}
|
||||
|
||||
streams.each do |stream_path, stream_class|
|
||||
describe "a GET to #{stream_path}" do
|
||||
it 'assigns a stream of the proper class' do
|
||||
it "assigns a stream of the proper class" do
|
||||
get stream_path
|
||||
expect(response).to be_success
|
||||
expect(assigns[:stream]).to be_a stream_class
|
||||
|
|
@ -59,3 +60,28 @@ describe StreamsController, :type => :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "with no user signed in" do
|
||||
describe "#public" do
|
||||
it "succeeds" do
|
||||
get :public
|
||||
expect(response).to be_success
|
||||
end
|
||||
|
||||
it "succeeds on mobile" do
|
||||
get :public, format: :mobile
|
||||
expect(response).to be_success
|
||||
end
|
||||
end
|
||||
|
||||
describe "other streams" do
|
||||
it "redirects to the login page" do
|
||||
%i[activity followed_tags liked mentioned multi].each do |stream_path|
|
||||
get stream_path
|
||||
expect(response).to be_redirect
|
||||
expect(response).to redirect_to new_user_session_path
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -35,6 +35,30 @@ describe ApplicationHelper, :type => :helper do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#service_unconnected?" do
|
||||
attr_reader :current_user
|
||||
|
||||
before do
|
||||
@current_user = alice
|
||||
end
|
||||
|
||||
it "returns true if the service is unconnected" do
|
||||
expect(AppConfig).to receive(:show_service?).with("service", alice).and_return(true)
|
||||
expect(service_unconnected?("service")).to be true
|
||||
end
|
||||
|
||||
it "returns false if the service is already connected" do
|
||||
@current_user.services << FactoryGirl.build(:service, provider: "service")
|
||||
expect(AppConfig).to receive(:show_service?).with("service", alice).and_return(true)
|
||||
expect(service_unconnected?("service")).to be false
|
||||
end
|
||||
|
||||
it "returns false if the the service shouldn't be shown" do
|
||||
expect(AppConfig).to receive(:show_service?).with("service", alice).and_return(false)
|
||||
expect(service_unconnected?("service")).to be false
|
||||
end
|
||||
end
|
||||
|
||||
describe "#jquery_include_tag" do
|
||||
describe "with jquery cdn" do
|
||||
before do
|
||||
|
|
|
|||
|
|
@ -47,12 +47,10 @@ describe Diaspora::Exporter do
|
|||
"contact_groups": [
|
||||
{
|
||||
"name": "generic",
|
||||
"contacts_visible": true,
|
||||
"chat_enabled": false
|
||||
},
|
||||
{
|
||||
"name": "Work",
|
||||
"contacts_visible": false,
|
||||
"chat_enabled": false
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -34,35 +34,6 @@ describe("app.pages.Contacts", function(){
|
|||
});
|
||||
});
|
||||
|
||||
context('toggle contacts visibility', function() {
|
||||
beforeEach(function() {
|
||||
this.visibilityToggle = $("#contacts_visibility_toggle");
|
||||
this.lockIcon = $("#contacts_visibility_toggle i");
|
||||
});
|
||||
|
||||
it("updates the title for the tooltip", function() {
|
||||
expect(this.lockIcon.attr("data-original-title")).toBe(
|
||||
Diaspora.I18n.t("contacts.aspect_list_is_visible")
|
||||
);
|
||||
|
||||
this.visibilityToggle.trigger("click");
|
||||
|
||||
expect(this.lockIcon.attr("data-original-title")).toBe(
|
||||
Diaspora.I18n.t("contacts.aspect_list_is_not_visible")
|
||||
);
|
||||
});
|
||||
|
||||
it("toggles the lock icon", function() {
|
||||
expect(this.lockIcon.hasClass("entypo-lock-open")).toBeTruthy();
|
||||
expect(this.lockIcon.hasClass("entypo-lock")).toBeFalsy();
|
||||
|
||||
this.visibilityToggle.trigger("click");
|
||||
|
||||
expect(this.lockIcon.hasClass("entypo-lock")).toBeTruthy();
|
||||
expect(this.lockIcon.hasClass("entypo-lock-open")).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
context('show aspect name form', function() {
|
||||
beforeEach(function() {
|
||||
this.button = $('#change_aspect_name');
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ describe("app.views.AspectCreate", function() {
|
|||
expect(this.view.$("#newAspectModal.modal").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal form").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal input#aspect_name").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal input#aspect_contacts_visible").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal .btn-primary").length).toBe(1);
|
||||
});
|
||||
|
||||
|
|
@ -61,21 +60,6 @@ describe("app.views.AspectCreate", function() {
|
|||
expect(obj.name).toBe(name);
|
||||
});
|
||||
|
||||
it("should send the correct contacts_visible to the server", function() {
|
||||
this.view.createAspect();
|
||||
var obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
/* jshint camelcase: false */
|
||||
expect(obj.contacts_visible).toBeFalsy();
|
||||
/* jshint camelcase: true */
|
||||
|
||||
this.view.$("input#aspect_contacts_visible").prop("checked", true);
|
||||
this.view.createAspect();
|
||||
obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
/* jshint camelcase: false */
|
||||
expect(obj.contacts_visible).toBeTruthy();
|
||||
/* jshint camelcase: true */
|
||||
});
|
||||
|
||||
it("should send person_id = null to the server", function() {
|
||||
this.view.createAspect();
|
||||
var obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
|
|
@ -150,7 +134,6 @@ describe("app.views.AspectCreate", function() {
|
|||
expect(this.view.$("#newAspectModal.modal").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal form").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal input#aspect_name").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal input#aspect_contacts_visible").length).toBe(1);
|
||||
expect(this.view.$("#newAspectModal .btn-primary").length).toBe(1);
|
||||
});
|
||||
|
||||
|
|
@ -174,21 +157,6 @@ describe("app.views.AspectCreate", function() {
|
|||
expect(obj.name).toBe(name);
|
||||
});
|
||||
|
||||
it("should send the correct contacts_visible to the server", function() {
|
||||
this.view.createAspect();
|
||||
var obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
/* jshint camelcase: false */
|
||||
expect(obj.contacts_visible).toBeFalsy();
|
||||
/* jshint camelcase: true */
|
||||
|
||||
this.view.$("input#aspect_contacts_visible").prop("checked", true);
|
||||
this.view.createAspect();
|
||||
obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
/* jshint camelcase: false */
|
||||
expect(obj.contacts_visible).toBeTruthy();
|
||||
/* jshint camelcase: true */
|
||||
});
|
||||
|
||||
it("should send the correct person_id to the server", function() {
|
||||
this.view.createAspect();
|
||||
var obj = JSON.parse(jasmine.Ajax.requests.mostRecent().params);
|
||||
|
|
|
|||
|
|
@ -217,6 +217,13 @@ STR
|
|||
expect(Diaspora::Mentionable.backport_mention_syntax(text)).to eq(expected_text)
|
||||
end
|
||||
|
||||
it "replaces the new syntax with the old syntax for immediately consecutive mentions" do
|
||||
text = "mention @{#{people[0].diaspora_handle}}@{#{people[1].diaspora_handle}} text"
|
||||
expected_text = "mention @{#{people[0].name}; #{people[0].diaspora_handle}}" \
|
||||
"@{#{people[1].name}; #{people[1].diaspora_handle}} text"
|
||||
expect(Diaspora::Mentionable.backport_mention_syntax(text)).to eq(expected_text)
|
||||
end
|
||||
|
||||
it "removes curly braces from name of the mentioned person when adding it" do
|
||||
profile = FactoryGirl.build(:profile, first_name: "{Alice}", last_name: "(Smith) [123]")
|
||||
person = FactoryGirl.create(:person, profile: profile)
|
||||
|
|
|
|||
|
|
@ -30,10 +30,6 @@ describe Aspect, :type => :model do
|
|||
expect(aspect.contacts.size).to eq(1)
|
||||
end
|
||||
|
||||
it "has a contacts_visible? method" do
|
||||
expect(alice.aspects.first.contacts_visible?).to be true
|
||||
end
|
||||
|
||||
it "sets an order_id" do
|
||||
aspect_2 = alice.aspects.create(name: "People")
|
||||
expect(aspect_2.order_id).to eq(2)
|
||||
|
|
|
|||
|
|
@ -160,62 +160,6 @@ describe Contact, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#contacts" do
|
||||
before do
|
||||
bob.aspects.create(name: "next")
|
||||
|
||||
@original_aspect = bob.aspects.where(name: "generic").first
|
||||
@new_aspect = bob.aspects.where(name: "next").first
|
||||
|
||||
@people1 = []
|
||||
@people2 = []
|
||||
|
||||
1.upto(5) do
|
||||
person = FactoryGirl.build(:person)
|
||||
bob.contacts.create(person: person, aspects: [@original_aspect])
|
||||
@people1 << person
|
||||
end
|
||||
1.upto(5) do
|
||||
person = FactoryGirl.build(:person)
|
||||
bob.contacts.create(person: person, aspects: [@new_aspect])
|
||||
@people2 << person
|
||||
end
|
||||
# eve <-> bob <-> alice
|
||||
end
|
||||
|
||||
context "on a contact for a local user" do
|
||||
before do
|
||||
alice.reload
|
||||
alice.aspects.reload
|
||||
@contact = alice.contact_for(bob.person)
|
||||
end
|
||||
|
||||
it "returns the target local user's contacts that are in the same aspect" do
|
||||
expect(@contact.contacts.map(&:id)).to match_array([eve.person].concat(@people1).map(&:id))
|
||||
end
|
||||
|
||||
it "returns nothing if contacts_visible is false in that aspect" do
|
||||
@original_aspect.contacts_visible = false
|
||||
@original_aspect.save
|
||||
expect(@contact.contacts).to eq([])
|
||||
end
|
||||
|
||||
it "returns no duplicate contacts" do
|
||||
[alice, eve].each {|c| bob.add_contact_to_aspect(bob.contact_for(c.person), bob.aspects.last) }
|
||||
contact_ids = @contact.contacts.map(&:id)
|
||||
expect(contact_ids.uniq).to eq(contact_ids)
|
||||
end
|
||||
end
|
||||
|
||||
context "on a contact for a remote user" do
|
||||
let(:contact) { bob.contact_for @people1.first }
|
||||
|
||||
it "returns an empty array" do
|
||||
expect(contact.contacts).to eq([])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#receive" do
|
||||
it "shares back if auto_following is enabled" do
|
||||
alice.auto_follow_back = true
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ describe Export::AspectSerializer do
|
|||
it "has aspect attributes" do
|
||||
expect(serializer.attributes).to eq(
|
||||
name: aspect.name,
|
||||
contacts_visible: aspect.contacts_visible,
|
||||
chat_enabled: aspect.chat_enabled
|
||||
)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ class DataGenerator
|
|||
end
|
||||
|
||||
def work_aspect
|
||||
user.aspects.create(name: "Work", contacts_visible: false)
|
||||
user.aspects.create(name: "Work")
|
||||
end
|
||||
|
||||
def status_messages_flavours
|
||||
|
|
|
|||
Loading…
Reference in a new issue