Merge pull request from urbanrotnik/ur-sci-3282-fix-dates-for-activities

Show date value without link [SCI-3282]
This commit is contained in:
Alex Kriuchykhin 2019-04-02 14:40:53 +02:00 committed by GitHub
commit 76e016f164
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 21 deletions

View file

@ -168,15 +168,17 @@ class MyModulesController < ApplicationController
if due_date_changes
# rubocop:disable Metrics/BlockNesting # temporary solution
type_of = if due_date_changes[0].nil? # set due_date
message_items = { my_module_duedate: @my_module.due_date }
:set_task_due_date
elsif due_date_changes[1].nil? # remove due_date
message_items = { my_module_duedate: due_date_changes[0] }
:remove_task_due_date
else # change due_date
message_items = { my_module_duedate: @my_module.due_date }
:change_task_due_date
end
# rubocop:enable Metrics/BlockNesting
log_activity(type_of, @my_module, my_module_duedate: { id: @my_module.id,
value_for: 'due_date' })
log_activity(type_of, @my_module, message_items)
end
end
end

View file

@ -11,6 +11,8 @@ module GlobalActivitiesHelper
parameters[key] =
if value.is_a? String
value
elsif value[:type] == 'Time' # use saved date for printing
l(Time.at(value[:value]), format: :full_date)
else
no_links ? generate_name(value) : generate_link(value, activity)
end
@ -80,9 +82,6 @@ module GlobalActivitiesHelper
value = obj.public_send(message_item[:value_for] || 'name')
value = t('global_activities.index.no_name') if value.blank?
# format if is datetime format
value = l(value, format: :full_date) if value.methods.include? :strftime
value
end
end

View file

@ -38,25 +38,29 @@ module Activities
def enrich_message_items
@message_items.each do |k, v|
if v.is_a? Time
@activity.message_items[k] = {
type: 'Time',
value: v.to_i
}
next
end
const = try_to_constantize k
if const
if v.is_a?(Hash) # Value is array, so you have getter specified
id = v[:id]
getter_method = v[:value_for]
value_type = v[:value_type]
else
id = v
getter_method = 'name'
end
obj = const.find id
@activity.message_items[k] = {
type: const.to_s,
value: obj.public_send(getter_method).to_s,
id: id
}
@activity.message_items[k].merge!(value_for: getter_method)
@activity.message_items[k] = { type: const.to_s, value: obj.public_send(getter_method).to_s, id: id }
@activity.message_items[k][:value_for] = getter_method
@activity.message_items[k][:value_type] = value_type unless value_type.nil?
else
@activity.message_items[k] = v.to_s
end

View file

@ -103,8 +103,8 @@ describe Activities::CreateActivityService do
end
context 'when message item is an object with custom value getter' do
it 'adds project due date to message items as hash' do
project.update_attribute(:due_date, Date.tomorrow)
it 'adds project visibility to message items as hash' do
project.update_attribute(:visibility, 'hidden')
activity = Activities::CreateActivityService
.call(activity_type: :create_project,
@ -112,15 +112,31 @@ describe Activities::CreateActivityService do
subject: project,
team: team,
message_items: {
project_duedate: { id: project.id,
value_for: 'due_date' }
project_visibility: { id: project.id, value_for: 'visibility' }
}).activity
expect(activity.message_items)
.to include(project_duedate: { id: project.id,
type: 'Project',
value_for: 'due_date',
value: project.due_date.to_s })
.to include(project_visibility: { id: project.id,
type: 'Project',
value_for: 'visibility',
value: project.visibility })
end
end
context 'when message item is an Time object' do
it 'adds time value and type to message items as hash' do
project.update_attribute(:visibility, 'hidden')
project.update_attribute(:due_date, Time.now)
activity = Activities::CreateActivityService.call(activity_type: :create_project,
owner: user,
subject: project,
team: team,
message_items: {
project_duedate: project.due_date
}).activity
expect(activity.message_items).to include(project_duedate: { type: 'Time', value: project.due_date.to_i })
end
end
end