Merge pull request #1628 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 if due_date_changes
# rubocop:disable Metrics/BlockNesting # temporary solution # rubocop:disable Metrics/BlockNesting # temporary solution
type_of = if due_date_changes[0].nil? # set due_date type_of = if due_date_changes[0].nil? # set due_date
message_items = { my_module_duedate: @my_module.due_date }
:set_task_due_date :set_task_due_date
elsif due_date_changes[1].nil? # remove due_date elsif due_date_changes[1].nil? # remove due_date
message_items = { my_module_duedate: due_date_changes[0] }
:remove_task_due_date :remove_task_due_date
else # change due_date else # change due_date
message_items = { my_module_duedate: @my_module.due_date }
:change_task_due_date :change_task_due_date
end end
# rubocop:enable Metrics/BlockNesting # rubocop:enable Metrics/BlockNesting
log_activity(type_of, @my_module, my_module_duedate: { id: @my_module.id, log_activity(type_of, @my_module, message_items)
value_for: 'due_date' })
end end
end end
end end

View file

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

View file

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

View file

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