From 1f8a9b558d552925a176e1dd6ba6ef54fc2ee20a Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Wed, 17 May 2017 17:09:03 +0100 Subject: Added editable concern Added editable concern spec Snippet include Editable --- app/controllers/projects/issues_controller.rb | 3 +-- app/helpers/application_helper.rb | 4 +--- app/helpers/editable_helper.rb | 5 ----- app/models/concerns/editable.rb | 7 +++++++ app/models/concerns/issuable.rb | 1 + app/models/note.rb | 1 + app/models/snippet.rb | 1 + app/views/projects/issues/show.html.haml | 2 +- spec/models/concerns/editable_spec.rb | 11 +++++++++++ 9 files changed, 24 insertions(+), 11 deletions(-) delete mode 100644 app/helpers/editable_helper.rb create mode 100644 app/models/concerns/editable.rb create mode 100644 spec/models/concerns/editable_spec.rb diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 5dfe00a35cd..7b1e4a70232 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -5,7 +5,6 @@ class Projects::IssuesController < Projects::ApplicationController include ToggleAwardEmoji include IssuableCollections include SpammableActions - include EditableHelper prepend_before_action :authenticate_user!, only: [:new] @@ -212,7 +211,7 @@ class Projects::IssuesController < Projects::ApplicationController issue_number: @issue.iid, } - if is_edited?(@issue) + if @issue.is_edited? response[:updated_at] = @issue.updated_at response[:updated_by_name] = @issue.last_edited_by.name response[:updated_by_path] = user_path(@issue.last_edited_by) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 16734fe4c75..8c74d36ad81 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2,8 +2,6 @@ require 'digest/md5' require 'uri' module ApplicationHelper - include EditableHelper - # Check if a particular controller is the current one # # args - One or more controller names to check @@ -183,7 +181,7 @@ module ApplicationHelper end def edited_time_ago_with_tooltip(object, placement: 'top', html_class: 'time_ago', exclude_author: false) - return unless is_edited?(object) + return unless object.is_edited? content_tag :small, class: 'edited-text' do output = content_tag(:span, 'Edited ') diff --git a/app/helpers/editable_helper.rb b/app/helpers/editable_helper.rb deleted file mode 100644 index 78d9998b97e..00000000000 --- a/app/helpers/editable_helper.rb +++ /dev/null @@ -1,5 +0,0 @@ -module EditableHelper - def is_edited?(object) - !object.last_edited_at.blank? && object.last_edited_at != object.created_at - end -end diff --git a/app/models/concerns/editable.rb b/app/models/concerns/editable.rb new file mode 100644 index 00000000000..c62c7e1e936 --- /dev/null +++ b/app/models/concerns/editable.rb @@ -0,0 +1,7 @@ +module Editable + extend ActiveSupport::Concern + + def is_edited? + last_edited_at.present? && last_edited_at != created_at + end +end diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 075ec575f9d..ea10d004c9c 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -15,6 +15,7 @@ module Issuable include Taskable include TimeTrackable include Importable + include Editable # This object is used to gather issuable meta data for displaying # upvotes, downvotes, notes and closing merge requests count for issues and merge requests diff --git a/app/models/note.rb b/app/models/note.rb index 46d0a4f159f..4cb3c6f062a 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -13,6 +13,7 @@ class Note < ActiveRecord::Base include AfterCommitQueue include ResolvableNote include IgnorableColumn + include Editable ignore_column :original_discussion_id diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 882e2fa0594..6c3358685fe 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -8,6 +8,7 @@ class Snippet < ActiveRecord::Base include Awardable include Mentionable include Spammable + include Editable cache_markdown_field :title, pipeline: :single_line cache_markdown_field :content diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml index 144233b54bb..0ad615535d7 100644 --- a/app/views/projects/issues/show.html.haml +++ b/app/views/projects/issues/show.html.haml @@ -53,7 +53,7 @@ .detail-page-description.content-block .issue-title-data.hidden{ "data" => { "endpoint" => rendered_title_namespace_project_issue_path(@project.namespace, @project, @issue), "can-update-tasks-class" => can?(current_user, :update_issue, @issue) ? 'js-task-list-container' : '', - "is-edited": is_edited?(@issue), + "is-edited": @issue.is_edited?, } } .issue-title-entrypoint diff --git a/spec/models/concerns/editable_spec.rb b/spec/models/concerns/editable_spec.rb new file mode 100644 index 00000000000..cd73af3b480 --- /dev/null +++ b/spec/models/concerns/editable_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe Editable do + describe '#is_edited?' do + let(:issue) { create(:issue, last_edited_at: nil) } + let(:edited_issue) { create(:issue, created_at: 3.days.ago, last_edited_at: 2.days.ago) } + + it { expect(issue.is_edited?).to eq(false) } + it { expect(edited_issue.is_edited?).to eq(true) } + end +end -- cgit v1.2.1