From e677057a5088ac7d8ea54722b3166ec7bfc12ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Mon, 18 Jun 2018 12:14:11 +0200 Subject: [PATCH] Possibility of Obsolete an Approved Version of a Document #798 --- after_init.rb | 4 ++-- app/controllers/dmsf_files_controller.rb | 1 - app/models/dmsf_file_revision.rb | 1 - app/views/dmsf/_list_view.erb | 2 +- app/views/dmsf_files/show.html.erb | 8 ++++---- config/locales/cs.yml | 3 +++ config/locales/de.yml | 3 +++ config/locales/en.yml | 1 - config/locales/fr.yml | 3 +++ config/locales/hu.yml | 3 +++ config/locales/it.yml | 3 +++ config/locales/ja.yml | 3 +++ config/locales/ko.yml | 3 +++ config/locales/nl.yml | 3 +++ config/locales/pl.yml | 3 +++ config/locales/pt-BR.yml | 3 +++ config/locales/ru.yml | 3 +++ config/locales/sl.yml | 3 +++ config/locales/zh-TW.yml | 3 +++ config/locales/zh.yml | 3 +++ test/functional/dmsf_files_controller_test.rb | 11 ++++++++++ test/unit/dmsf_file_revision_test.rb | 20 +++++++++++++++++++ 22 files changed, 80 insertions(+), 10 deletions(-) diff --git a/after_init.rb b/after_init.rb index 332fcca3..ae2a2468 100644 --- a/after_init.rb +++ b/after_init.rb @@ -40,8 +40,8 @@ def init :dmsf_folders_copy => [:new, :copy, :move], :dmsf_context_menus => [:dmsf]} pmap.permission :file_manipulation, - {:dmsf_files => [:create_revision, :lock, :unlock, :delete_revision, :obsolete_revision, :notify_activate, - :notify_deactivate, :restore], + {:dmsf_files => [:create_revision, :lock, :unlock, :delete_revision, :obsolete_revision, + :notify_activate, :notify_deactivate, :restore], :dmsf_upload => [:upload_files, :upload_file, :upload, :commit_files, :commit, :delete_dmsf_attachment, :delete_dmsf_link_attachment], :dmsf_links => [:new, :create, :destroy, :restore, :autocomplete_for_project, diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 532ed6c5..f7327360 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -248,7 +248,6 @@ class DmsfFilesController < ApplicationController if @revision if @revision.obsolete() flash[:notice] = l(:notice_revision_obsoleted) - log_activity('obsoleted') else flash[:error] = @revision.errors.full_messages.join(', ') end diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 6be846a7..76965097 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -114,7 +114,6 @@ class DmsfFileRevision < ActiveRecord::Base errors[:base] << l(:error_file_is_locked) return false end - self.workflow = DmsfWorkflow::STATE_OBSOLETE save end diff --git a/app/views/dmsf/_list_view.erb b/app/views/dmsf/_list_view.erb index e89f32e8..d2f781bd 100644 --- a/app/views/dmsf/_list_view.erb +++ b/app/views/dmsf/_list_view.erb @@ -119,7 +119,7 @@ <% end %> <% classes = 'dmsf_gray hascontextmenu' %> <% @file_links.each do |link| %> - <% unless link.target_file.last_revision %> + <% unless link.target_file && link.target_file.last_revision %> <% Rails.logger.error "Error: dmsf_file id #{link.target_id} has no revision!" %> <% next %> <% end %> diff --git a/app/views/dmsf_files/show.html.erb b/app/views/dmsf_files/show.html.erb index 3b0dee12..d95f453e 100644 --- a/app/views/dmsf_files/show.html.erb +++ b/app/views/dmsf_files/show.html.erb @@ -25,7 +25,7 @@ <% html_title(l(:dmsf)) %>
- <% if User.current.allowed_to?(:file_manipulation, @project) %> + <% if @file_manipulation_allowed %> <% unless @file.locked_for_user? %> <% unless @file.locked? %> <%= link_to(l(:button_lock), lock_dmsf_files_path(:id => @file), @@ -64,7 +64,7 @@ <%= render(:partial => '/dmsf/path', :locals => {:folder => @file.dmsf_folder, :filename => @file.title, :title => nil}) %> -<% if User.current.allowed_to?(:file_manipulation, @file.project) && !@file.locked_for_user? %> +<% if @file_manipulation_allowed && !@file.locked_for_user? %> <%= error_messages_for('file') %> <%= error_messages_for('revision') %> <%= render(:partial => 'file_new_revision') %> @@ -94,7 +94,7 @@ <%= link_to image_tag('/../../plugin_assets/redmine_dmsf/images/obsolete.png'), obsolete_revision_path(revision), :data => {:confirm => l(:text_are_you_sure)}, - :title => l(:title_obsolete_revision) if @file_delete_allowed && (revision.workflow == DmsfWorkflow::STATE_APPROVED) %> + :title => l(:title_obsolete_revision) if @file_manipulation_allowed && (revision.workflow == DmsfWorkflow::STATE_APPROVED) %>
<%= l(:info_revision, :rev => revision.id) %> <%= (revision.source_revision.nil? ? l(:label_created) : l(:label_changed)).downcase %> @@ -174,7 +174,7 @@
" style="display:none"> - <%= render(:partial => 'revision_access', :locals => {:revision => revision}) if User.current.allowed_to?(:file_manipulation, @file.project) %> + <%= render(:partial => 'revision_access', :locals => {:revision => revision}) if @file_manipulation_allowed %>
diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 655f8210..ed45d8cf 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -48,6 +48,7 @@ cs: notice_file_deleted: Soubor byl smazán error_at_least_one_revision_must_be_present: Musí existovat alespoň jedna revize notice_revision_deleted: Revize byla smazána + notice_revision_obsoleted: Revize je zastaralá warning_one_of_files_locked: Jeden ze souborů je zamčen notice_file_revision_created: vytvořena nová revize notice_your_preferences_were_saved: Vaše nastavení bylo uloženo @@ -115,6 +116,7 @@ cs: heading_revisions: Revize title_download: Stáhnout title_delete_revision: Smazat revizi + title_obsolete_revision: Označit revizi jako zastaralou label_created: Vytvořeno label_changed: Změněno info_changed_by_user: "%{changed} uživatelem" @@ -269,6 +271,7 @@ cs: title_assigned: Přiřazený title_approval: Schválený title_rejected: Zamítnutý + title_obsolete: Zastaralá dmsf_and: A dmsf_or: NEBO dmsf_new_step: Nový krok diff --git a/config/locales/de.yml b/config/locales/de.yml index c04c298c..4ebd1101 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -48,6 +48,7 @@ de: notice_file_deleted: Datei gelöscht error_at_least_one_revision_must_be_present: Es muss mindestens eine Version existieren notice_revision_deleted: Version gelöscht + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Eine der Dateien ist gesperrt notice_file_revision_created: Dateiversion erstellt notice_your_preferences_were_saved: Deine Einstellungen wurden gespeichert @@ -115,6 +116,7 @@ de: heading_revisions: Versionen title_download: Download title_delete_revision: Lösche Version + title_obsolete_revision: Obsolete revision label_created: Erstellt label_changed: Geändert info_changed_by_user: "%{changed} von" @@ -269,6 +271,7 @@ de: title_assigned: Zugewiesen title_approval: Genehmigt title_rejected: Abgelehnt + title_obsolete: Obsolete dmsf_and: UND dmsf_or: ODER dmsf_new_step: Neuer Schritt diff --git a/config/locales/en.yml b/config/locales/en.yml index 52b69613..9c52b6f1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -166,7 +166,6 @@ en: permission_display_system_folders: Display system folders permission_file_approval: File approval permission_email_documents: Email documents - label_file: File field_folder: Folder error_create_cycle_in_folder_dependency: create cycle in folder dependency diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 10087622..4cb39aa2 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -48,6 +48,7 @@ fr: notice_file_deleted: Le fichier a été supprimé error_at_least_one_revision_must_be_present: Au moins une révision est requise notice_revision_deleted: Révision supprimée + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Un des fichiers sélectionnés est verrouillé notice_file_revision_created: La révision du fichier a été ajoutée notice_your_preferences_were_saved: Vos paramètres ont été enregistrés @@ -115,6 +116,7 @@ fr: heading_revisions: Révisions title_download: Télécharger title_delete_revision: Supprimer la révision + title_obsolete_revision: Obsolete revision label_created: Créé label_changed: Modifié info_changed_by_user: "%{changed} par" @@ -269,6 +271,7 @@ fr: title_assigned: Assigné title_approval: Approbation title_rejected: Rejeté + title_obsolete: Obsolete dmsf_and: ET dmsf_or: OU dmsf_new_step: Nouvelle étape diff --git a/config/locales/hu.yml b/config/locales/hu.yml index e564b61e..a4cfa0dc 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -48,6 +48,7 @@ hu: notice_file_deleted: Törölt fájl error_at_least_one_revision_must_be_present: Legalább egy verziónak szükséges lennie notice_revision_deleted: Verzió törölve + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Az egyik fájl zárolva van notice_file_revision_created: Fájl verzió létrehozva notice_your_preferences_were_saved: A preferenciái mentése kerültek @@ -115,6 +116,7 @@ hu: heading_revisions: Verziók title_download: Letöltés title_delete_revision: Verzió törlése + title_obsolete_revision: Obsolete revision label_created: Létrehozott label_changed: Változtatott info_changed_by_user: "%{changed} általa" @@ -269,6 +271,7 @@ hu: title_assigned: Kiosztott title_approval: Jóváhagyás title_rejected: Visszautasított + title_obsolete: Obsolete dmsf_and: ÉS dmsf_or: VAGY dmsf_new_step: Új lépés diff --git a/config/locales/it.yml b/config/locales/it.yml index 9a9d74fb..63b45110 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -48,6 +48,7 @@ it: # Italian strings thx 2 Matteo Arceci! notice_file_deleted: Il documento è stato cancellato error_at_least_one_revision_must_be_present: Deve essere presente almeno una revisione notice_revision_deleted: Revisione cancellata + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Uno dei documenti è bloccato notice_file_revision_created: Revisione del documento creata notice_your_preferences_were_saved: Le tue preferenze sono state salvate @@ -115,6 +116,7 @@ it: # Italian strings thx 2 Matteo Arceci! heading_revisions: Revisioni title_download: Download title_delete_revision: Cancella revisione + title_obsolete_revision: Obsolete revision label_created: Creato label_changed: Modificato info_changed_by_user: "%{changed} da" @@ -269,6 +271,7 @@ it: # Italian strings thx 2 Matteo Arceci! title_assigned: Assegnato title_approval: Approvazione title_rejected: Rifiutato + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: Nuovo passo diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e11bd764..a93148db 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -49,6 +49,7 @@ ja: error_at_least_one_revision_must_be_present: 少なくとも1つのリビジョンが必要です notice_revision_deleted: リビジョンを削除しました warning_one_of_files_locked: ファイルのうちの1つがロックされています + notice_revision_obsoleted: Revision obsoleted notice_file_revision_created: ファイルのリビジョンを作成しました notice_your_preferences_were_saved: あなたの設定を保存しました notice_your_preferences_were_not_saved: Your preferences were not saved @@ -115,6 +116,7 @@ ja: heading_revisions: リビジョン title_download: ダウンロードします title_delete_revision: リビジョンを削除します + title_obsolete_revision: Obsolete revision label_created: 作成者/日時 label_changed: 更新者/日時 info_changed_by_user: "/ %{changed}" @@ -269,6 +271,7 @@ ja: title_assigned: アサイン title_approval: 承認 title_rejected: 否認 + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: 新規ステップ diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 5abfad16..9caf138e 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -49,6 +49,7 @@ ko: error_at_least_one_revision_must_be_present: 적어도 한개의 수정사항이 있어야 합니다 notice_revision_deleted: 수정사항 삭제됨 warning_one_of_files_locked: 파일 중 한개가 잠겨있습니다 + notice_revision_obsoleted: Revision obsoleted notice_file_revision_created: 수정된 파일이 생성되었습니다 notice_your_preferences_were_saved: 사용자의 선호도가 저장되었습니다 notice_your_preferences_were_not_saved: 사용자의 선호도는 저장되지 않았습니다 @@ -115,6 +116,7 @@ ko: heading_revisions: 수정 title_download: 다운로드 title_delete_revision: 수정사항 삭제 + title_obsolete_revision: Obsolete revision label_created: 생성됨 label_changed: 변경됨 info_changed_by_user: "가 %{changed}함" @@ -269,6 +271,7 @@ ko: title_assigned: 할당됨 title_approval: 승인 title_rejected: 반려 + title_obsolete: Obsolete dmsf_and: 및 dmsf_or: 혹은 dmsf_new_step: 새로운 스텝 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 7e68e8cb..4cf155ae 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -48,6 +48,7 @@ nl: notice_file_deleted: Map verwijderd error_at_least_one_revision_must_be_present: Er moet ten minste een revisie aanwezig zijn notice_revision_deleted: Revisie verwijderd + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Een van de bestanden vergrendeld notice_file_revision_created: Bestandsrevisie aangemaakt notice_your_preferences_were_saved: Uw voorkeuren zijn opgeslagen @@ -115,6 +116,7 @@ nl: heading_revisions: Revisies title_download: Downloaden title_delete_revision: Verwijder revisie + title_obsolete_revision: Obsolete revision label_created: Aangemaakt label_changed: Gewijzigd info_changed_by_user: "%{changed} door" @@ -269,6 +271,7 @@ nl: title_assigned: Toegewezen title_approval: Goedkeuring title_rejected: Afgewezen + title_obsolete: Obsolete dmsf_and: EN dmsf_or: OF dmsf_new_step: Nieuwe stap diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 97c7b427..89abcd52 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -48,6 +48,7 @@ pl: notice_file_deleted: Plik został usunięty error_at_least_one_revision_must_be_present: Musi istnieć co najmniej jedna wersja notice_revision_deleted: Wersja usunięta + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Jeden z plików jest zablokowany notice_file_revision_created: Utworzono wersję pliku notice_your_preferences_were_saved: Twoje preferencje zostały zapisane @@ -115,6 +116,7 @@ pl: heading_revisions: Wersje title_download: Pobierz title_delete_revision: Usuń wersję + title_obsolete_revision: Obsolete revision label_created: Utworzono label_changed: Zmieniono info_changed_by_user: "%{changed} przez" @@ -269,6 +271,7 @@ pl: title_assigned: Przydzielony title_approval: Akceptacja title_rejected: Odrzucony + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: Nowy krok diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 6b85e585..b8cc7b00 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -48,6 +48,7 @@ pt-BR: notice_file_deleted: Arquivo excluído error_at_least_one_revision_must_be_present: Deve existir pelo menos uma revisão notice_revision_deleted: Revisão excluída + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Um dos arquivos bloqueados notice_file_revision_created: Revisão do arquivo criado notice_your_preferences_were_saved: Suas atualizações foram salvas @@ -115,6 +116,7 @@ pt-BR: heading_revisions: Revisões title_download: Download title_delete_revision: Revisão excluída + title_obsolete_revision: Obsolete revision label_created: Criado label_changed: Alterado info_changed_by_user: "%{changed} por" @@ -269,6 +271,7 @@ pt-BR: title_assigned: Atribuído title_approval: Aprovado title_rejected: Rejeitado + title_obsolete: Obsolete dmsf_and: E dmsf_or: OU dmsf_new_step: Novo passo diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 627a8008..cc15bdc6 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -48,6 +48,7 @@ ru: notice_file_deleted: Файл удален error_at_least_one_revision_must_be_present: По крайней мере, одна редакция должна присутствовать notice_revision_deleted: Редакция удалена + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Один из файлов заблокирован notice_file_revision_created: Редакция файла создана notice_your_preferences_were_saved: Ваши настройки были сохранены @@ -115,6 +116,7 @@ ru: heading_revisions: Редакции title_download: Скачать title_delete_revision: Удалить редакцию + title_obsolete_revision: Obsolete revision label_created: Создан label_changed: Изменен info_changed_by_user: "%{changed} пользователем" @@ -269,6 +271,7 @@ ru: title_assigned: Назначен title_approval: Согласован title_rejected: Отклонен + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: Новый шаг diff --git a/config/locales/sl.yml b/config/locales/sl.yml index cf7739b4..7961cc47 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -48,6 +48,7 @@ sl: notice_file_deleted: Datoteka izbrisana error_at_least_one_revision_must_be_present: Vsaj ena verzija mora obstajati notice_revision_deleted: Verzija izbrisana + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: Ena od datotek je zaklenjena notice_file_revision_created: Verzija datoteke kreirana notice_your_preferences_were_saved: Vaše nastavitve so shranjene @@ -115,6 +116,7 @@ sl: heading_revisions: Verzije title_download: Prenesi dol title_delete_revision: Izbriši verzijo + title_obsolete_revision: Obsolete revision label_created: Narejeno label_changed: Spremenjeno info_changed_by_user: "%{changed} po" @@ -269,6 +271,7 @@ sl: title_assigned: Assigned title_approval: Approval title_rejected: Rejected + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: New step diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ca830435..002da782 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -48,6 +48,7 @@ zh-TW: notice_file_deleted: 檔案己經被刪除了 error_at_least_one_revision_must_be_present: 至少要有一個修訂版本存在 notice_revision_deleted: 修訂版本己經被刪除 + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: 其中一個檔案被鎖定了 notice_file_revision_created: 檔案修訂版本己建立 notice_your_preferences_were_saved: 您的偏好設定己經儲存 @@ -115,6 +116,7 @@ zh-TW: heading_revisions: 修訂版本 title_download: 下載 title_delete_revision: 刪除此修訂版本 + title_obsolete_revision: Obsolete revision label_created: 建立者/時間 label_changed: 修改者/時間 info_changed_by_user: "%{changed} by" @@ -269,6 +271,7 @@ zh-TW: title_assigned: Assigned title_approval: Approval title_rejected: Rejected + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: New step diff --git a/config/locales/zh.yml b/config/locales/zh.yml index c68f68fe..72c8f061 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -48,6 +48,7 @@ zh: notice_file_deleted: 文件已删除 error_at_least_one_revision_must_be_present: 至少一个修订版本必须存在 notice_revision_deleted: 修订版本已删除 + notice_revision_obsoleted: Revision obsoleted warning_one_of_files_locked: 其中一个文件被锁定 notice_file_revision_created: 文件修订版本已创建 notice_your_preferences_were_saved: 您的偏好设定已保存 @@ -115,6 +116,7 @@ zh: heading_revisions: 修订版本 title_download: 下载 title_delete_revision: 删除此修订 + title_obsolete_revision: Obsolete revision label_created: 创建 label_changed: 修改 info_changed_by_user: "%{changed} by" @@ -269,6 +271,7 @@ zh: title_assigned: Assigned title_approval: Approval title_rejected: Rejected + title_obsolete: Obsolete dmsf_and: AND dmsf_or: OR dmsf_new_step: New step diff --git a/test/functional/dmsf_files_controller_test.rb b/test/functional/dmsf_files_controller_test.rb index 60199561..95ebfc3e 100644 --- a/test/functional/dmsf_files_controller_test.rb +++ b/test/functional/dmsf_files_controller_test.rb @@ -91,5 +91,16 @@ class DmsfFilesControllerTest < RedmineDmsf::Test::TestCase assert_response :redirect assert_equal 0, flash[:error].size end + + def test_obsolete_revision_ok + @role.add_permission! :file_manipulation + get :obsolete_revision, :id => @file.last_revision.id + assert_redirected_to :action => 'show', :id => @file + end + + def test_obsolete_revision_missing_permissions + get :obsolete_revision, :id => @file.last_revision.id + assert :forbiden + end end \ No newline at end of file diff --git a/test/unit/dmsf_file_revision_test.rb b/test/unit/dmsf_file_revision_test.rb index 578ce517..820e53e1 100644 --- a/test/unit/dmsf_file_revision_test.rb +++ b/test/unit/dmsf_file_revision_test.rb @@ -21,6 +21,8 @@ require File.expand_path('../../test_helper', __FILE__) class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest + include Redmine::I18n + fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles, :members, :member_roles, :enabled_modules, :enumerations, :dmsf_locks, :dmsf_workflows, :dmsf_workflow_steps, :dmsf_workflow_step_assignments, :dmsf_workflow_step_actions @@ -31,6 +33,8 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest @revision5 = DmsfFileRevision.find_by_id 5 @revision8 = DmsfFileRevision.find_by_id 8 @wf1 = DmsfWorkflow.find_by_id 1 + @admin = User.find_by_id 1 + @jsmith = User.find_by_id 2 Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.expand_path '../../fixtures/files', __FILE__ end @@ -40,6 +44,8 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest assert_kind_of DmsfFileRevision, @revision5 assert_kind_of DmsfFileRevision, @revision8 assert_kind_of DmsfWorkflow, @wf1 + assert_kind_of User, @admin + assert_kind_of User, @jsmith end def test_delete_restore @@ -223,4 +229,18 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest assert_equal 'ms-excel', @revision1.protocol end + def test_obsolete + assert @revision1.obsolete + assert_equal DmsfWorkflow::STATE_OBSOLETE, @revision1.workflow + end + + def test_obsolete_locked + User.current = @admin + @revision1.dmsf_file.lock! + User.current = @jsmith + assert !@revision1.obsolete + assert_equal 1, @revision1.errors.count + @revision1.errors.full_messages.to_sentence.include?(l(:error_file_is_locked)) + end + end \ No newline at end of file