From 44f712a2e611a104df262b6b95ca8c385f35d74b Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 6 Feb 2017 00:29:01 +0100 Subject: [PATCH 1/3] Add test for first post to be public --- features/desktop/signs_up.feature | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/features/desktop/signs_up.feature b/features/desktop/signs_up.feature index dbbbf73fa..84b6381a3 100644 --- a/features/desktop/signs_up.feature +++ b/features/desktop/signs_up.feature @@ -37,6 +37,11 @@ Feature: new user registration Then I should be on the stream page And I close the publisher + Scenario: first status message is public + When I confirm the alert after I follow "awesome_button" + Then I should be on the stream page + And I should see "Public" within ".aspect_dropdown" + Scenario: new user without any tags posts first status message When I confirm the alert after I follow "awesome_button" Then I should be on the stream page From 8ebf9c4a4c7eece58f8150bc115d61c91cde6684 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 6 Feb 2017 03:24:04 +0100 Subject: [PATCH 2/3] Move publisher methods to PublisherHelper and check public publisher flag This makes the #newhere post public again. --- app/helpers/aspect_global_helper.rb | 14 +--- app/helpers/publisher_helper.rb | 18 +++++ app/views/aspects/_aspect_dropdown.html.haml | 6 +- app/views/publisher/_publisher.html.haml | 2 +- spec/helpers/publisher_helper_spec.rb | 69 ++++++++++++++++++++ 5 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 spec/helpers/publisher_helper_spec.rb diff --git a/app/helpers/aspect_global_helper.rb b/app/helpers/aspect_global_helper.rb index d495072d9..aa8e052c8 100644 --- a/app/helpers/aspect_global_helper.rb +++ b/app/helpers/aspect_global_helper.rb @@ -11,7 +11,7 @@ module AspectGlobalHelper options end - def publisher_aspects_for(stream=nil) + def publisher_aspects_for(stream) if stream aspects = stream.aspects aspect = stream.aspect @@ -25,16 +25,4 @@ module AspectGlobalHelper end {selected_aspects: aspects, aspect: aspect, aspect_ids: aspect_ids} end - - def public_selected?(selected_aspects) - "public" == selected_aspects.try(:first) - end - - def all_aspects_selected?(aspects, selected_aspects) - !aspects.empty? && aspects.size == selected_aspects.size && !public_selected?(selected_aspects) - end - - def aspect_selected?(aspect, aspects, selected_aspects) - selected_aspects.include?(aspect) && !all_aspects_selected?(aspects, selected_aspects) - end end diff --git a/app/helpers/publisher_helper.rb b/app/helpers/publisher_helper.rb index ba4bc1d37..ed6ed9a48 100644 --- a/app/helpers/publisher_helper.rb +++ b/app/helpers/publisher_helper.rb @@ -24,4 +24,22 @@ module PublisherHelper end end end + + def public_selected?(selected_aspects) + "public" == selected_aspects.try(:first) || publisher_boolean?(:public) + end + + def all_aspects_selected?(selected_aspects) + !all_aspects.empty? && all_aspects.size == selected_aspects.size && !public_selected?(selected_aspects) + end + + def aspect_selected?(aspect, selected_aspects) + selected_aspects.include?(aspect) && !all_aspects_selected?(selected_aspects) && !public_selected?(selected_aspects) + end + + private + + def publisher_boolean?(option) + @stream.try(:publisher).try(option) == true + end end diff --git a/app/views/aspects/_aspect_dropdown.html.haml b/app/views/aspects/_aspect_dropdown.html.haml index 6199d4b1e..226bbc068 100644 --- a/app/views/aspects/_aspect_dropdown.html.haml +++ b/app/views/aspects/_aspect_dropdown.html.haml @@ -15,7 +15,7 @@ - else %i.entypo-lock.small#visibility-icon %span.text - - if all_aspects_selected?(all_aspects, selected_aspects) + - if all_aspects_selected?(selected_aspects) = t("all_aspects") - elsif selected_aspects.size == 1 = selected_aspects.first.name @@ -31,7 +31,7 @@ %span.text = t("public") %li.all_aspects.radio{"data-aspect_id" => "all_aspects", - :class => ("selected" if all_aspects_selected?(all_aspects, selected_aspects))} + :class => ("selected" if all_aspects_selected?(selected_aspects))} %a %span.status_indicator %i.glyphicon.glyphicon-ok @@ -40,7 +40,7 @@ %li.divider - all_aspects.each do |aspect| %li.aspect_selector{"data-aspect_id" => aspect.id, - :class => ("selected" if aspect_selected?(aspect, all_aspects, selected_aspects))} + :class => ("selected" if aspect_selected?(aspect, selected_aspects))} %a %span.status_indicator %i.glyphicon.glyphicon-ok diff --git a/app/views/publisher/_publisher.html.haml b/app/views/publisher/_publisher.html.haml index d71b1e27f..9c9370b0c 100644 --- a/app/views/publisher/_publisher.html.haml +++ b/app/views/publisher/_publisher.html.haml @@ -42,7 +42,7 @@ - if public_selected?(selected_aspects) = hidden_field_tag "aspect_ids[]", "public" - - elsif all_aspects_selected?(all_aspects, selected_aspects) + - elsif all_aspects_selected?(selected_aspects) = hidden_field_tag "aspect_ids[]", "all_aspects" - else - for aspect_id in aspect_ids diff --git a/spec/helpers/publisher_helper_spec.rb b/spec/helpers/publisher_helper_spec.rb new file mode 100644 index 000000000..e4a20368c --- /dev/null +++ b/spec/helpers/publisher_helper_spec.rb @@ -0,0 +1,69 @@ +describe PublisherHelper, type: :helper do + describe "#public_selected?" do + it "returns true when the selected_aspects contains 'public'" do + expect(helper.public_selected?(["public"])).to be_truthy + end + + it "returns true when the publisher is set to public" do + @stream = double(publisher: double(public: true)) + expect(helper.public_selected?(alice.aspects.to_a)).to be_truthy + end + + it "returns false when the selected_aspects does not contain 'public' and the publisher is not public" do + @stream = double(publisher: double(public: false)) + expect(helper.public_selected?(alice.aspects.to_a)).to be_falsey + end + + it "returns false when the selected_aspects does not contain 'public' and there is no stream" do + expect(helper.public_selected?(alice.aspects.to_a)).to be_falsey + end + end + + describe "#all_aspects_selected?" do + it "returns true when the selected_aspects are the same size as all_aspects from the user" do + expect(helper).to receive(:all_aspects).twice.and_return(alice.aspects.to_a) + expect(helper.all_aspects_selected?(alice.aspects.to_a)).to be_truthy + end + + it "returns false when not all aspects are selected" do + alice.aspects.create(name: "other") + expect(helper).to receive(:all_aspects).twice.and_return(alice.aspects.to_a) + expect(helper.all_aspects_selected?([alice.aspects.first])).to be_falsey + end + + it "returns false when the user does not have aspects" do + expect(helper).to receive(:all_aspects).and_return([]) + expect(helper.all_aspects_selected?(alice.aspects.to_a)).to be_falsey + end + + it "returns false when the publisher is set to public" do + @stream = double(publisher: double(public: true)) + expect(helper).to receive(:all_aspects).twice.and_return(alice.aspects.to_a) + expect(helper.all_aspects_selected?(alice.aspects.to_a)).to be_falsey + end + end + + describe "#aspect_selected?" do + before do + alice.aspects.create(name: "other") + allow(helper).to receive(:all_aspects).and_return(alice.aspects.to_a) + end + + it "returns true when the selected_aspects contains the aspect" do + expect(helper.aspect_selected?(alice.aspects.first, [alice.aspects.first])).to be_truthy + end + + it "returns false when the selected_aspects does not contain the aspect" do + expect(helper.aspect_selected?(alice.aspects.first, [alice.aspects.second])).to be_falsey + end + + it "returns false when all aspects are selected" do + expect(helper.aspect_selected?(alice.aspects.first, alice.aspects.to_a)).to be_falsey + end + + it "returns false when the publisher is set to public" do + @stream = double(publisher: double(public: true)) + expect(helper.aspect_selected?(alice.aspects.first, [alice.aspects.first])).to be_falsey + end + end +end From d9a12972714a861f88e1780c598728d74e9954f5 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 6 Feb 2017 03:39:13 +0100 Subject: [PATCH 3/3] Refactor PublisherHelper and move publisher_open? method closes #7311 --- Changelog.md | 1 + app/helpers/interim_stream_hackiness_helper.rb | 8 -------- app/helpers/publisher_helper.rb | 18 ++++++++---------- app/views/publisher/_publisher.html.haml | 2 +- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/Changelog.md b/Changelog.md index 1fd404c29..54e8571d8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,6 +5,7 @@ ## Bug fixes * Fix path to `bundle` in `script/server` [#7281](https://github.com/diaspora/diaspora/pull/7281) * Update comment in database example config [#7282](https://github.com/diaspora/diaspora/pull/7282) +* Make the \#newhere post public again [#7311](https://github.com/diaspora/diaspora/pull/7311) ## Features * Add support for [Liberapay](https://liberapay.com) donations [#7290](https://github.com/diaspora/diaspora/pull/7290) diff --git a/app/helpers/interim_stream_hackiness_helper.rb b/app/helpers/interim_stream_hackiness_helper.rb index 78a893143..b531871f2 100644 --- a/app/helpers/interim_stream_hackiness_helper.rb +++ b/app/helpers/interim_stream_hackiness_helper.rb @@ -38,12 +38,4 @@ module InterimStreamHackinessHelper [] end end - - def publisher_method(method) - @stream.try(:publisher).try(method) == true - end - - def publisher_open - publisher_method(:open) - end end diff --git a/app/helpers/publisher_helper.rb b/app/helpers/publisher_helper.rb index ed6ed9a48..472f29685 100644 --- a/app/helpers/publisher_helper.rb +++ b/app/helpers/publisher_helper.rb @@ -3,24 +3,18 @@ # the COPYRIGHT file. module PublisherHelper - def remote? - params[:controller] != "tags" - end - def service_button(service) - provider_title = I18n.t( - "services.index.share_to", - provider: service.provider.titleize) + provider_title = I18n.t("services.index.share_to", provider: service.provider.titleize) content_tag :div, class: "btn btn-link service_icon dim", title: "#{provider_title} (#{service.nickname})", - id: "#{service.provider}", - maxchar: "#{service.class::MAX_CHARACTERS}", + id: service.provider, + maxchar: service.class::MAX_CHARACTERS, data: {toggle: "tooltip", placement: "bottom"} do if service.provider == "wordpress" content_tag(:span, "", class: "social-media-logos-wordpress-16x16") else - content_tag(:i, "", class: "entypo-social-#{ service.provider } small") + content_tag(:i, "", class: "entypo-social-#{service.provider} small") end end end @@ -37,6 +31,10 @@ module PublisherHelper selected_aspects.include?(aspect) && !all_aspects_selected?(selected_aspects) && !public_selected?(selected_aspects) end + def publisher_open? + publisher_boolean?(:open) + end + private def publisher_boolean?(option) diff --git a/app/views/publisher/_publisher.html.haml b/app/views/publisher/_publisher.html.haml index 9c9370b0c..1304283a4 100644 --- a/app/views/publisher/_publisher.html.haml +++ b/app/views/publisher/_publisher.html.haml @@ -1,4 +1,4 @@ -.row.publisher#publisher{class: ((aspect == :profile || publisher_open) ? "mention_popup" : "closed")} +.row.publisher#publisher{class: ((aspect == :profile || publisher_open?) ? "mention_popup" : "closed")} .content_creation = form_for(StatusMessage.new) do |status| = status.error_messages