Merge branch 'hotfix/1.28.0.1' into develop

This commit is contained in:
Martin Artnik 2023-08-24 12:14:30 +02:00
commit 0faad52f6c
41 changed files with 81 additions and 72 deletions

View file

@ -1 +1 @@
1.28.0 1.28.0.1

View file

@ -48,14 +48,14 @@ function generateElnTable(content, tableMetadata) {
for (let j = 0; j < numCols; j += 1) { for (let j = 0; j < numCols; j += 1) {
let cellData = ''; let cellData = '';
let cellClass = getMetadataCellValue(tableMetadata.cells, i - 1, j - 1); let cellClass = tableMetadata ? getMetadataCellValue(tableMetadata.cells, i - 1, j - 1) : '';
if (i > 0 && j > 0 && tableData.data[i - 1][j - 1] !== null) { if (i > 0 && j > 0 && tableData.data[i - 1][j - 1] !== null) {
cellData = tableData.data[i - 1][j - 1]; cellData = tableData.data[i - 1][j - 1];
} else if (i === 0 && j !== 0) { } else if (i === 0 && j !== 0) {
cellData = tableMetadata.plateTemplate ? j.toString() : colName(j - 1); cellData = tableMetadata && tableMetadata.plateTemplate ? j.toString() : colName(j - 1);
} else if (j === 0 && i !== 0) { } else if (j === 0 && i !== 0) {
cellData = tableMetadata.plateTemplate ? colName(i - 1) : i.toString(); cellData = tableMetadata && tableMetadata.plateTemplate ? colName(i - 1) : i.toString();
} }
tableCells = `${tableCells}<td ${cellClass ? `class="${cellClass}"` : ''}>${cellData}</td>`; tableCells = `${tableCells}<td ${cellClass ? `class="${cellClass}"` : ''}>${cellData}</td>`;

View file

@ -184,7 +184,7 @@ var RepositoryDatatable = (function(global) {
$('#saveRecord').attr('disabled', false); $('#saveRecord').attr('disabled', false);
$(TABLE_WRAPPER_ID).find('tr').removeClass('blocked'); $(TABLE_WRAPPER_ID).find('tr').removeClass('blocked');
if (TABLE.ColSizes) { if (TABLE.ColSizes && TABLE.ColSizes.filter((s) => !!s).length > 0) {
$(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns'); $(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns');
} }
@ -586,7 +586,9 @@ var RepositoryDatatable = (function(global) {
state.ColSizes = data; state.ColSizes = data;
$(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns'); if (data.length > 0) {
$(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns');
}
updateColSizeMap(state); updateColSizeMap(state);
@ -773,7 +775,7 @@ var RepositoryDatatable = (function(global) {
if (json.state.columns[7]) json.state.columns[7].visible = archived; if (json.state.columns[7]) json.state.columns[7].visible = archived;
if (json.state.search) delete json.state.search; if (json.state.search) delete json.state.search;
if (json.state.ColSizes) { if (json.state.ColSizes && json.state.ColSizes.length > 0) {
$(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns'); $(TABLE_WRAPPER_ID).find('.table').addClass('table--resizable-columns');
TABLE.ColSizes = json.state.ColSizes; TABLE.ColSizes = json.state.ColSizes;
updateColSizeMap(json.state); updateColSizeMap(json.state);

View file

@ -29,9 +29,9 @@ module AccessPermissions
UserAssignments::PropagateAssignmentJob.perform_later( UserAssignments::PropagateAssignmentJob.perform_later(
@experiment, @experiment,
@user_assignment.user, @user_assignment.user.id,
@user_assignment.user_role, @user_assignment.user_role,
current_user current_user.id
) )
log_change_activity log_change_activity

View file

@ -174,9 +174,9 @@ module AccessPermissions
def propagate_job(user_assignment, destroy: false) def propagate_job(user_assignment, destroy: false)
UserAssignments::PropagateAssignmentJob.perform_later( UserAssignments::PropagateAssignmentJob.perform_later(
@project, @project,
user_assignment.user, user_assignment.user.id,
user_assignment.user_role, user_assignment.user_role,
current_user, current_user.id,
destroy: destroy destroy: destroy
) )
end end

View file

@ -10,7 +10,7 @@ module Api
valid_url?(projects_json_export_params[:callback_url]) valid_url?(projects_json_export_params[:callback_url])
ProjectsJsonExportJob.perform_later(projects_json_export_params[:task_ids], ProjectsJsonExportJob.perform_later(projects_json_export_params[:task_ids],
projects_json_export_params[:callback_url], projects_json_export_params[:callback_url],
current_user) current_user.id)
render json: { status: :ok }, status: :accepted render json: { status: :ok }, status: :accepted
end end

View file

@ -502,7 +502,7 @@ class ExperimentsController < ApplicationController
}.merge(new_my_module.get_new_position) }.merge(new_my_module.get_new_position)
) )
new_my_module.designated_users << current_user new_my_module.designated_users << current_user
MyModules::CopyContentJob.perform_later(current_user, my_module.id, new_my_module.id) MyModules::CopyContentJob.perform_later(current_user.id, my_module.id, new_my_module.id)
end end
@experiment.workflowimg.purge @experiment.workflowimg.purge
end end

View file

@ -184,7 +184,7 @@ class ReportsController < ApplicationController
log_activity(:generate_docx_report) log_activity(:generate_docx_report)
ensure_report_template! ensure_report_template!
Reports::DocxJob.perform_later(@report.id, current_user, root_url) Reports::DocxJob.perform_later(@report.id, current_user.id, root_url)
render json: { render json: {
message: I18n.t('projects.reports.index.generation.accepted_message') message: I18n.t('projects.reports.index.generation.accepted_message')
} }
@ -400,7 +400,7 @@ class ReportsController < ApplicationController
log_activity(:generate_pdf_report) log_activity(:generate_pdf_report)
ensure_report_template! ensure_report_template!
Reports::PdfJob.perform_later(@report.id, current_user) Reports::PdfJob.perform_later(@report.id, current_user.id)
end end
def ensure_report_template! def ensure_report_template!

View file

@ -108,7 +108,7 @@ class RepositoriesController < ApplicationController
end end
# offload the rest to background job # offload the rest to background job
HideRepositoryRemindersJob.perform_later(@repository, current_user) HideRepositoryRemindersJob.perform_later(@repository, current_user.id)
render json: { status: :ok }, status: :accepted render json: { status: :ok }, status: :accepted
end end
@ -349,7 +349,7 @@ class RepositoriesController < ApplicationController
repositories = Repository.viewable_by_user(current_user, current_team).where(id: params[:repository_ids]) repositories = Repository.viewable_by_user(current_user, current_team).where(id: params[:repository_ids])
if repositories.present? && current_user.has_available_exports? if repositories.present? && current_user.has_available_exports?
current_user.increase_daily_exports_counter! current_user.increase_daily_exports_counter!
RepositoriesExportJob.perform_later(repositories.pluck(:id), current_user, current_team) RepositoriesExportJob.perform_later(repositories.pluck(:id), current_user.id, current_team)
render json: { message: t('zip_export.export_request_success') } render json: { message: t('zip_export.export_request_success') }
else else
render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity render json: { message: t('zip_export.export_error') }, status: :unprocessable_entity

View file

@ -153,7 +153,7 @@ class TeamsController < ApplicationController
options = { team: @team } options = { team: @team }
zip = TeamZipExport.create(user: current_user) zip = TeamZipExport.create(user: current_user)
zip.generate_exportable_zip( zip.generate_exportable_zip(
current_user, current_user.id,
ids, ids,
:teams, :teams,
options options

View file

@ -1,6 +1,6 @@
module NotificationsHelper module NotificationsHelper
def send_email_notification(user, notification) def send_email_notification(user, notification)
AppMailer.delay.notification(user, notification) AppMailer.delay.notification(user.id, notification)
end end
# generate assignment notification # generate assignment notification

View file

@ -3,7 +3,8 @@
class HideRepositoryRemindersJob < ApplicationJob class HideRepositoryRemindersJob < ApplicationJob
queue_as :high_priority queue_as :high_priority
def perform(repository, user) def perform(repository, user_id)
user = User.find(user_id)
hidden_reminder_repository_cell_ids = hidden_reminder_repository_cell_ids =
HiddenRepositoryCellReminder.joins(repository_cell: { repository_row: :repository }) HiddenRepositoryCellReminder.joins(repository_cell: { repository_row: :repository })
.where(user: user) .where(user: user)

View file

@ -2,7 +2,8 @@
module MyModules module MyModules
class CopyContentJob < ApplicationJob class CopyContentJob < ApplicationJob
def perform(user, source_my_module_id, target_my_module_id) def perform(user_id, source_my_module_id, target_my_module_id)
user = User.find(user_id)
target_my_module = MyModule.find(target_my_module_id) target_my_module = MyModule.find(target_my_module_id)
MyModule.transaction do MyModule.transaction do
MyModule.find(source_my_module_id).copy_content(user, target_my_module) MyModule.find(source_my_module_id).copy_content(user, target_my_module)

View file

@ -1,7 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
class ProjectsJsonExportJob < ApplicationJob class ProjectsJsonExportJob < ApplicationJob
def perform(task_ids, callback, user) def perform(task_ids, callback, user_id)
user = User.find(user_id)
projects_json_export_service = ProjectsJsonExportService.new(task_ids, projects_json_export_service = ProjectsJsonExportService.new(task_ids,
callback, callback,
user) user)

View file

@ -21,7 +21,7 @@ module Reports
else else
Rails.application.routes.url_helpers.reports_path(team: report.team.id) Rails.application.routes.url_helpers.reports_path(team: report.team.id)
end end
user = job.arguments.second user = User.find(job.arguments.second)
notification = Notification.create( notification = Notification.create(
type_of: :deliver_error, type_of: :deliver_error,
title: I18n.t('projects.reports.index.generation.error_docx_notification_title'), title: I18n.t('projects.reports.index.generation.error_docx_notification_title'),
@ -33,8 +33,9 @@ module Reports
Rails.logger.error("Couldn't generate DOCX for Report with id: #{report.id}. Error:\n #{error}") Rails.logger.error("Couldn't generate DOCX for Report with id: #{report.id}. Error:\n #{error}")
end end
def perform(report_id, user, root_url) def perform(report_id, user_id, root_url)
report = Report.find(report_id) report = Report.find(report_id)
user = User.find(user_id)
file = Tempfile.new(['report', '.docx']) file = Tempfile.new(['report', '.docx'])
begin begin
I18n.backend.date_format = user.settings[:date_format] I18n.backend.date_format = user.settings[:date_format]

View file

@ -25,7 +25,7 @@ module Reports
else else
Rails.application.routes.url_helpers.reports_path(team: report.team.id) Rails.application.routes.url_helpers.reports_path(team: report.team.id)
end end
user = job.arguments.second user = User.find(job.arguments.second)
notification = Notification.create( notification = Notification.create(
type_of: :deliver_error, type_of: :deliver_error,
title: I18n.t('projects.reports.index.generation.error_pdf_notification_title'), title: I18n.t('projects.reports.index.generation.error_pdf_notification_title'),
@ -39,8 +39,9 @@ module Reports
PREVIEW_EXTENSIONS = %w(docx pdf).freeze PREVIEW_EXTENSIONS = %w(docx pdf).freeze
def perform(report_id, user) def perform(report_id, user_id)
report = Report.find(report_id) report = Report.find(report_id)
user = User.find(user_id)
file = Tempfile.new(['report', '.pdf'], binmode: true) file = Tempfile.new(['report', '.pdf'], binmode: true)
begin begin
template = template =

View file

@ -3,8 +3,8 @@
class RepositoriesExportJob < ApplicationJob class RepositoriesExportJob < ApplicationJob
include StringUtility include StringUtility
def perform(repository_ids, user, team) def perform(repository_ids, user_id, team)
@user = user @user = User.find(user_id)
@team = team @team = team
@repositories = Repository.viewable_by_user(@user, @team).where(id: repository_ids).order(:id) @repositories = Repository.viewable_by_user(@user, @team).where(id: repository_ids).order(:id)
zip_input_dir = FileUtils.mkdir_p(Rails.root.join("tmp/temp_zip_#{Time.now.to_i}")).first zip_input_dir = FileUtils.mkdir_p(Rails.root.join("tmp/temp_zip_#{Time.now.to_i}")).first

View file

@ -4,8 +4,8 @@ module UserAssignments
class GenerateUserAssignmentsJob < ApplicationJob class GenerateUserAssignmentsJob < ApplicationJob
queue_as :high_priority queue_as :high_priority
def perform(object, assigned_by) def perform(object, assigned_by_id)
@assigned_by = assigned_by @assigned_by = User.find_by(id: assigned_by_id)
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
case object case object
when Experiment when Experiment

View file

@ -4,9 +4,9 @@ module UserAssignments
class ProjectGroupAssignmentJob < ApplicationJob class ProjectGroupAssignmentJob < ApplicationJob
queue_as :high_priority queue_as :high_priority
def perform(team, project, assigned_by) def perform(team, project, assigned_by_id)
@team = team @team = team
@assigned_by = assigned_by @assigned_by = User.find_by(id: assigned_by_id)
return unless project.visible? return unless project.visible?
@ -27,9 +27,9 @@ module UserAssignments
# make sure all related experiments and my modules are assigned # make sure all related experiments and my modules are assigned
UserAssignments::PropagateAssignmentJob.perform_later( UserAssignments::PropagateAssignmentJob.perform_later(
project, project,
user, user.id,
project.default_public_user_role || UserRole.find_predefined_viewer_role, project.default_public_user_role || UserRole.find_predefined_viewer_role,
@assigned_by @assigned_by&.id
) )
end end
end end

View file

@ -4,10 +4,10 @@ module UserAssignments
class PropagateAssignmentJob < ApplicationJob class PropagateAssignmentJob < ApplicationJob
queue_as :high_priority queue_as :high_priority
def perform(resource, user, user_role, assigned_by, options = {}) def perform(resource, user_id, user_role, assigned_by_id, options = {})
@user = user @user = User.find(user_id)
@user_role = user_role @user_role = user_role
@assigned_by = assigned_by @assigned_by = User.find_by(id: assigned_by_id)
@destroy = options.fetch(:destroy, false) @destroy = options.fetch(:destroy, false)
@remove_from_team = options.fetch(:remove_from_team, false) @remove_from_team = options.fetch(:remove_from_team, false)
@resource = resource @resource = resource

View file

@ -7,8 +7,8 @@ class AppMailer < Devise::Mailer
default from: ENV['MAIL_FROM'] default from: ENV['MAIL_FROM']
default reply: ENV['MAIL_REPLYTO'] default reply: ENV['MAIL_REPLYTO']
def notification(user, notification, opts = {}) def notification(user_id, notification, opts = {})
@user = user @user = User.find(user_id)
@notification = notification @notification = notification
subject = subject =
if notification.deliver? if notification.deliver?

View file

@ -73,7 +73,7 @@ module Assignable
user_role: role user_role: role
) )
UserAssignments::GenerateUserAssignmentsJob.perform_later(self, created_by) UserAssignments::GenerateUserAssignmentsJob.perform_later(self, created_by.id)
end end
end end
end end

View file

@ -353,7 +353,7 @@ class Experiment < ApplicationRecord
# regenerate user assignments # regenerate user assignments
my_module.user_assignments.destroy_all my_module.user_assignments.destroy_all
UserAssignments::GenerateUserAssignmentsJob.perform_later(my_module, current_user) UserAssignments::GenerateUserAssignmentsJob.perform_later(my_module, current_user.id)
Activities::CreateActivityService.call(activity_type: :move_task, Activities::CreateActivityService.call(activity_type: :move_task,
owner: current_user, owner: current_user,
@ -410,7 +410,7 @@ class Experiment < ApplicationRecord
# regenerate user assignments # regenerate user assignments
m.user_assignments.destroy_all m.user_assignments.destroy_all
UserAssignments::GenerateUserAssignmentsJob.new(m, current_user).perform_now UserAssignments::GenerateUserAssignmentsJob.new(m, current_user.id).perform_now
# Add activity # Add activity
Activities::CreateActivityService.call( Activities::CreateActivityService.call(

View file

@ -341,7 +341,7 @@ class Project < ApplicationRecord
UserAssignments::ProjectGroupAssignmentJob.perform_later( UserAssignments::ProjectGroupAssignmentJob.perform_later(
team, team,
self, self,
last_modified_by || created_by last_modified_by&.id || created_by&.id
) )
end end

View file

@ -6,8 +6,8 @@ require 'csv'
class TeamZipExport < ZipExport class TeamZipExport < ZipExport
include StringUtility include StringUtility
def generate_exportable_zip(user, data, type, options = {}) def generate_exportable_zip(user_id, data, type, options = {})
@user = user @user = User.find(user_id)
zip_input_dir = FileUtils.mkdir_p( zip_input_dir = FileUtils.mkdir_p(
File.join(Rails.root, "tmp/temp_zip_#{Time.now.to_i}") File.join(Rails.root, "tmp/temp_zip_#{Time.now.to_i}")
).first ).first

View file

@ -45,7 +45,8 @@ class ZipExport < ApplicationRecord
end end
end end
def generate_exportable_zip(user, data, type, options = {}) def generate_exportable_zip(user_id, data, type, options = {})
user = User.find(user_id)
I18n.backend.date_format = user.settings[:date_format] || Constants::DEFAULT_DATE_FORMAT I18n.backend.date_format = user.settings[:date_format] || Constants::DEFAULT_DATE_FORMAT
zip_input_dir = FileUtils.mkdir_p(File.join(Rails.root, "tmp/temp_zip_#{Time.now.to_i}")).first zip_input_dir = FileUtils.mkdir_p(File.join(Rails.root, "tmp/temp_zip_#{Time.now.to_i}")).first
tmp_zip_dir = FileUtils.mkdir_p(File.join(Rails.root, 'tmp/zip-ready')).first tmp_zip_dir = FileUtils.mkdir_p(File.join(Rails.root, 'tmp/zip-ready')).first

View file

@ -118,7 +118,7 @@ module Experiments
user_role: @project.user_assignments.find_by(user: @user).user_role user_role: @project.user_assignments.find_by(user: @user).user_role
) )
UserAssignments::GenerateUserAssignmentsJob.perform_later(object, @user) UserAssignments::GenerateUserAssignmentsJob.perform_later(object, @user.id)
end end
def clean_up_user_my_modules(my_module) def clean_up_user_my_modules(my_module)

View file

@ -70,7 +70,7 @@ module Reports::Docx::DrawMyModule
draw_step(step) draw_step(step)
end end
@docx.h4 I18n.t('Results') if my_module.results.any? @docx.h4 I18n.t('Results') if my_module.results.any? && (%w(file_results table_results text_results).any? { |k| @settings.dig('task', k) })
order_results_for_report(my_module.results, @settings.dig('task', 'result_order')).each do |result| order_results_for_report(my_module.results, @settings.dig('task', 'result_order')).each do |result|
if result.is_asset && @settings.dig('task', 'file_results') if result.is_asset && @settings.dig('task', 'file_results')
draw_result_asset(result, @settings) draw_result_asset(result, @settings)

View file

@ -30,7 +30,7 @@ module RepositoryZipExport
zip = ZipExport.create(user: current_user) zip = ZipExport.create(user: current_user)
zip.generate_exportable_zip( zip.generate_exportable_zip(
current_user, current_user.id,
to_csv(rows, params[:header_ids], current_user, repository, nil, params[:my_module_id].present?), to_csv(rows, params[:header_ids], current_user, repository, nil, params[:my_module_id].present?),
:repositories :repositories
) )

View file

@ -188,9 +188,9 @@ class TeamImporter
# handle the permissions for newly created experiment # handle the permissions for newly created experiment
user = User.find(user_id) user = User.find(user_id)
UserAssignments::GenerateUserAssignmentsJob.perform_now(experiment, user) UserAssignments::GenerateUserAssignmentsJob.perform_now(experiment, user.id)
experiment.my_modules.find_each do |my_module| experiment.my_modules.find_each do |my_module|
UserAssignments::GenerateUserAssignmentsJob.perform_now(my_module, user) UserAssignments::GenerateUserAssignmentsJob.perform_now(my_module, user.id)
end end
puts "Imported experiment: #{experiment.id}" puts "Imported experiment: #{experiment.id}"
return experiment return experiment

View file

@ -21,7 +21,7 @@ module Toolbars
return [] if @repositories.none? return [] if @repositories.none?
if @archived_state if @archived_state
[restore_action, delete_action] [export_action, restore_action, delete_action]
else else
[rename_action, duplicate_action, export_action, archive_action, share_action] [rename_action, duplicate_action, export_action, archive_action, share_action]
end.compact end.compact

View file

@ -24,7 +24,7 @@ module UserAssignments
UserAssignments::ProjectGroupAssignmentJob.perform_later( UserAssignments::ProjectGroupAssignmentJob.perform_later(
@team, @team,
project, project,
@assigned_by @assigned_by&.id
) )
end end
end end

View file

@ -10,7 +10,7 @@ module UserAssignments
def call def call
@team.projects.find_each do |project| @team.projects.find_each do |project|
UserAssignments::PropagateAssignmentJob UserAssignments::PropagateAssignmentJob
.perform_now(project, @user, nil, nil, destroy: true, remove_from_team: true) .perform_now(project, @user.id, nil, nil, destroy: true, remove_from_team: true)
end end
remove_repositories_assignments remove_repositories_assignments
remove_protocols_assignments remove_protocols_assignments

View file

@ -66,9 +66,11 @@
<% end %> <% end %>
<div class="results-title-name"> <% if %w(file_results table_results text_results).any? { |k| @settings.dig('task', k) } %>
<%= t('projects.reports.elements.module.results') %> <div class="results-title-name">
</div><br> <%= t('projects.reports.elements.module.results') %>
</div><br>
<% end %>
<% order_results_for_report(my_module.results, @settings.dig('task', 'result_order')).each do |result| %> <% order_results_for_report(my_module.results, @settings.dig('task', 'result_order')).each do |result| %>
<% if result.is_asset && @settings.dig('task', 'file_results') %> <% if result.is_asset && @settings.dig('task', 'file_results') %>

View file

@ -25,7 +25,7 @@
</div> </div>
<div class="report-element-body"> <div class="report-element-body">
<input type="hidden" class="hot-table-contents" value="<%= table.contents_utf_8 %>" /> <input type="hidden" class="hot-table-contents" value="<%= table.contents_utf_8 %>" />
<input type="hidden" class="hot-table-metadata" value="<%= table.metadata.to_json %>" /> <input type="hidden" class="hot-table-metadata" value="<%= table.metadata ? table.metadata.to_json : nil %>" />
<div class="hot-table-container"></div> <div class="hot-table-container"></div>
<table class="report-common-table-format"></table> <table class="report-common-table-format"></table>
</div> </div>

View file

@ -1,5 +1,4 @@
<div class="content-pane flexible <%= params[:archived] ? :archived : :active %> repositories-index" <div class="content-pane flexible <%= params[:archived] ? :archived : :active %> repositories-index">
data-readonly="<%= !can_manage_team?(current_team) %>">
<div class="content-header"> <div class="content-header">
<div class="title-row"> <div class="title-row">
<h1 data-view-mode="active"><%= t('libraries.index.head_title') %></h1> <h1 data-view-mode="active"><%= t('libraries.index.head_title') %></h1>

View file

@ -12,7 +12,7 @@
<div class="tab-pane" role="tabpanel" id="exp-tab-<%= at_who_key %>" data-object-type="EXPERIMENT"></div> <div class="tab-pane" role="tabpanel" id="exp-tab-<%= at_who_key %>" data-object-type="EXPERIMENT"></div>
<div class="tab-pane" role="tabpanel" id="tsk-tab-<%= at_who_key %>" data-object-type="TASK"></div> <div class="tab-pane" role="tabpanel" id="tsk-tab-<%= at_who_key %>" data-object-type="TASK"></div>
<div class="tab-pane rep-tab" role="tabpanel" id="rep-tab-<%= at_who_key %>" data-object-type="REPOSITORY"><% if repositories.length > 1 %> <div class="tab-pane rep-tab" role="tabpanel" id="rep-tab-<%= at_who_key %>" data-object-type="REPOSITORY"><% if repositories.length > 1 %>
<div class=sci-btn-group> <div class="sci-btn-group flex-wrap">
<% repositories.each do |repository| %> <% repositories.each do |repository| %>
<button class="btn btn-light repository-object" data-object-id="<%= repository.id %>"> <button class="btn btn-light repository-object" data-object-id="<%= repository.id %>">
<% if repository.shared_with?(current_team) %> <% if repository.shared_with?(current_team) %>

View file

@ -30,7 +30,7 @@ module UserAssignments
end end
it 'assigns the same role as the user had on project level' do it 'assigns the same role as the user had on project level' do
described_class.perform_now(experiment, user_one) described_class.perform_now(experiment, user_one.id)
user_two_assignment = UserAssignment.find_by(user: user_two, assignable: experiment) user_two_assignment = UserAssignment.find_by(user: user_two, assignable: experiment)
user_three_assignment = UserAssignment.find_by(user: user_three, assignable: experiment) user_three_assignment = UserAssignment.find_by(user: user_three, assignable: experiment)
expect(user_two_assignment.user_role).to eq viewer_role expect(user_two_assignment.user_role).to eq viewer_role
@ -49,7 +49,7 @@ module UserAssignments
end end
it 'assigns the same role as the user had on project level' do it 'assigns the same role as the user had on project level' do
described_class.perform_now(my_module, user_one) described_class.perform_now(my_module, user_one.id)
user_two_assignment = UserAssignment.find_by(user: user_two, assignable: my_module) user_two_assignment = UserAssignment.find_by(user: user_two, assignable: my_module)
user_three_assignment = UserAssignment.find_by(user: user_three, assignable: my_module) user_three_assignment = UserAssignment.find_by(user: user_three, assignable: my_module)
expect(user_two_assignment.user_role).to eq viewer_role expect(user_two_assignment.user_role).to eq viewer_role

View file

@ -19,12 +19,12 @@ module UserAssignments
describe 'perform' do describe 'perform' do
it 'propagates the user assignments to project child object' do it 'propagates the user assignments to project child object' do
expect { expect {
described_class.perform_now(project, user_two, technician_role, user_one) described_class.perform_now(project, user_two.id, technician_role, user_one.id)
}.to change(UserAssignment, :count).by(4) }.to change(UserAssignment, :count).by(4)
end end
it 'propagates the user assignments to project child object with the same role' do it 'propagates the user assignments to project child object with the same role' do
described_class.perform_now(project, user_two, technician_role, user_one) described_class.perform_now(project, user_two.id, technician_role, user_one.id)
[ [
UserAssignment.find_by(user: user_two, assignable: experiment_one), UserAssignment.find_by(user: user_two, assignable: experiment_one),
UserAssignment.find_by(user: user_two, assignable: experiment_two), UserAssignment.find_by(user: user_two, assignable: experiment_two),
@ -53,7 +53,7 @@ module UserAssignments
user_role: owner_role, user_role: owner_role,
assigned_by: user_one, assigned_by: user_one,
assigned: :manually assigned: :manually
described_class.perform_now(project, user_two, technician_role, user_one) described_class.perform_now(project, user_two.id, technician_role, user_one.id)
expect(experiment_assignment.reload.user_role).to eq owner_role expect(experiment_assignment.reload.user_role).to eq owner_role
end end
@ -64,7 +64,7 @@ module UserAssignments
user_role: owner_role, user_role: owner_role,
assigned_by: user_one, assigned_by: user_one,
assigned: :automatically assigned: :automatically
described_class.perform_now(project, user_two, technician_role, user_one) described_class.perform_now(project, user_two.id, technician_role, user_one.id)
expect(experiment_assignment.reload.user_role).to eq technician_role expect(experiment_assignment.reload.user_role).to eq technician_role
end end
end end

View file

@ -30,7 +30,7 @@ describe ProjectMember, type: :model do
it 'triggers the UserAssignments::PropagateAssignmentJob job' do it 'triggers the UserAssignments::PropagateAssignmentJob job' do
subject.user_role_id = normal_user_role.id subject.user_role_id = normal_user_role.id
expect(UserAssignments::PropagateAssignmentJob).to receive(:perform_later).with( expect(UserAssignments::PropagateAssignmentJob).to receive(:perform_later).with(
project, user, normal_user_role, user project, user.id, normal_user_role, user.id
) )
subject.update subject.update
end end
@ -74,7 +74,7 @@ describe ProjectMember, type: :model do
it 'triggers the UserAssignments::PropagateAssignmentJob job' do it 'triggers the UserAssignments::PropagateAssignmentJob job' do
expect(UserAssignments::PropagateAssignmentJob).to receive(:perform_later).with( expect(UserAssignments::PropagateAssignmentJob).to receive(:perform_later).with(
project, user, owner_role, user, destroy: true project, user.id, owner_role, user.id, destroy: true
) )
subject.destroy subject.destroy
end end

View file

@ -17,7 +17,7 @@ class AppMailerPreview < ActionMailer::Preview
def assignment_notification def assignment_notification
AppMailer.notification( AppMailer.notification(
fake_user, fake_user.id,
Notification.new( Notification.new(
type_of: :assignment, type_of: :assignment,
title: I18n.t( title: I18n.t(
@ -40,7 +40,7 @@ class AppMailerPreview < ActionMailer::Preview
user = User.first user = User.first
user = fake_user if user.blank? user = fake_user if user.blank?
AppMailer.notification( AppMailer.notification(
user, user.id,
Notification.new( Notification.new(
type_of: :recent_changes, type_of: :recent_changes,
title: I18n.t( title: I18n.t(
@ -59,7 +59,7 @@ class AppMailerPreview < ActionMailer::Preview
def delivery_notification def delivery_notification
AppMailer.notification( AppMailer.notification(
fake_user, fake_user.id,
Notification.new( Notification.new(
type_of: :deliver, type_of: :deliver,
title: 'Your requested export package is ready!', title: 'Your requested export package is ready!',