#1330 tests
This commit is contained in:
parent
22ecb03f87
commit
39a2081cac
@ -27,29 +27,25 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_file_id_ / _revision_id_ can be found in the link for file/revision download."
|
||||
macro :dmsf do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if args[2].blank?
|
||||
revision = file.last_revision
|
||||
else
|
||||
revision = DmsfFileRevision.find(args[2])
|
||||
revision = DmsfFileRevision.find args[2]
|
||||
if revision.dmsf_file != file
|
||||
raise ActiveRecord::RecordNotFound
|
||||
end
|
||||
end
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project, { id: file.id })
|
||||
file_view_url = url_for(controller: :dmsf_files, action: 'view', id: file, download: args[2])
|
||||
title = args[1] ? args[1] : file.title
|
||||
title.gsub!(/\A"|"\z/,'') # Remove apostrophes
|
||||
title.gsub!(/\A'|'\z/,'')
|
||||
title = file.title if title.empty?
|
||||
return link_to(h(title),
|
||||
file_view_url,
|
||||
target: '_blank',
|
||||
title: h(revision.tooltip),
|
||||
'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_view_url}")
|
||||
else
|
||||
unless User.current&.allowed_to?(:view_dmsf_files, file.project, { id: file.id })
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
title = args[1].present? ? args[1] : file.title
|
||||
title.gsub! /\A"|"\z/, '' # Remove apostrophes
|
||||
title.gsub! /\A'|'\z/, ''
|
||||
title = file.title if title.empty?
|
||||
url = view_dmsf_file_path(id: file.id, download: args[2])
|
||||
link_to h(title), url, target: '_blank', title: h(revision.tooltip),
|
||||
'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{url}"
|
||||
end
|
||||
|
||||
# dmsff - link to a folder
|
||||
@ -64,13 +60,13 @@ Redmine::WikiFormatting::Macros.register do
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
else
|
||||
folder = DmsfFolder.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_folders, folder.project)
|
||||
folder = DmsfFolder.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_folders, folder.project)
|
||||
title = args[1] ? args[1] : folder.title
|
||||
title.gsub!(/\A"|"\z/,'') # Remove apostrophes
|
||||
title.gsub!(/\A'|'\z/,'')
|
||||
title.gsub! /\A"|"\z/, '' # Remove leading and trailing apostrophe
|
||||
title.gsub! /\A'|'\z/, ''
|
||||
title = folder.title if title.empty?
|
||||
return link_to h(title), dmsf_folder_url(folder.project, folder_id: folder)
|
||||
link_to h(title), dmsf_folder_url(folder.project, folder_id: folder)
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -83,9 +79,12 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_document_id_ can be found in the document's details."
|
||||
macro :dmsfd do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
return link_to(h(args[1] ? args[1] : file.title), dmsf_file_path(id: file))
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
title = args[1].present? ? args[1] : file.title
|
||||
title.gsub! /\A"|"\z/, '' # Remove leading and trailing apostrophe
|
||||
title.gsub! /\A'|'\z/, ''
|
||||
link_to h(title), dmsf_file_path(id: file)
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -97,9 +96,9 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_document_id_ can be found in the document's details."
|
||||
macro :dmsfdesc do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
return textilizable(file.description)
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
textilizable file.description
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -111,9 +110,9 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_document_id_ can be found in the document's details."
|
||||
macro :dmsfversion do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
return textilizable(file.version)
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
textilizable file.version
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -125,9 +124,9 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_document_id_ can be found in the document's details."
|
||||
macro :dmsflastupdate do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
return textilizable(format_time(file.last_revision.updated_at))
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
textilizable format_time(file.last_revision.updated_at)
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -136,12 +135,12 @@ Redmine::WikiFormatting::Macros.register do
|
||||
# dmsft - link to the document's content preview
|
||||
desc "Text referring to DMSF text document content:\n\n" +
|
||||
"{{dmsft(file_id, lines_count)}}\n\n" +
|
||||
"_file_id_ can be found in the document's details. _lines_count_ indicate quantity of lines to show."
|
||||
"_file_id_ can be found in the document's details. _lines_count_ indicates quantity of lines to show."
|
||||
macro :dmsft do |obj, args|
|
||||
raise ArgumentError if args.length < 2 # Requires file id and lines number
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
return file.preview(args[1].strip).gsub("\n", '<br/>').html_safe
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
file.preview(args[1]).gsub("\n", '<br/>').html_safe
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
@ -150,108 +149,95 @@ Redmine::WikiFormatting::Macros.register do
|
||||
# dmsf_image - link to an image
|
||||
desc "Wiki DMSF image:\n\n" +
|
||||
"{{dmsf_image(file_id)}}\n" +
|
||||
"{{dmsf_image(file_id, size=300)}} -- with and size 300x300\n" +
|
||||
"{{dmsf_image(file_id, size=50%)}} -- with size 50%\n" +
|
||||
"{{dmsf_image(file_id, size=300)}} -- with size 300\n" +
|
||||
"{{dmsf_image(file_id, height=300)}} -- with height (auto width)\n" +
|
||||
"{{dmsf_image(file_id, width=300)}} -- with width (auto height)\n" +
|
||||
"{{dmsf_image(file_id, size=640x480)}} -- with and size 640x480"
|
||||
"{{dmsf_image(file_id, size=640x480)}} -- with size 640x480"
|
||||
macro :dmsf_image do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
args, options = extract_macro_options(args, :size, :width, :height, :title)
|
||||
file_id = args.first
|
||||
raise 'DMSF document ID required' unless file_id.present?
|
||||
size = options[:size]
|
||||
width = options[:width]
|
||||
height = options[:height]
|
||||
if file = DmsfFile.find_by(id: file_id)
|
||||
unless User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported image format' unless file.image?
|
||||
url = url_for(controller: :dmsf_files, action: 'view', id: file)
|
||||
if size && size.include?('%')
|
||||
image_tag url, alt: file.title, width: size, height: size
|
||||
elsif height
|
||||
image_tag url, alt: file.title, width: 'auto', height: height
|
||||
elsif width
|
||||
image_tag url, alt: file.title, width: width, height: 'auto'
|
||||
else
|
||||
image_tag url, alt: file.title, size: size
|
||||
end
|
||||
file = DmsfFile.visible.find args[0]
|
||||
unless User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported image format' unless file.image?
|
||||
url = view_dmsf_file_path(file)
|
||||
if size&.include?('%')
|
||||
image_tag url, alt: file.title, width: size, height: size
|
||||
elsif height
|
||||
image_tag url, alt: file.title, width: 'auto', height: height
|
||||
elsif width
|
||||
image_tag url, alt: file.title, width: width, height: 'auto'
|
||||
else
|
||||
raise "Document ID #{file_id} not found"
|
||||
image_tag url, alt: file.title, size: size
|
||||
end
|
||||
end
|
||||
|
||||
# dmsf_video - link to a video
|
||||
desc "Wiki DMSF image:\n\n" +
|
||||
desc "Wiki DMSF video:\n\n" +
|
||||
"{{dmsf_video(file_id)}}\n" +
|
||||
"{{dmsf_video(file_id, size=300)}} -- with and size 300x300\n" +
|
||||
"{{dmsf_video(file_id, size=50%)}} -- with size 50%\n" +
|
||||
"{{dmsf_video(file_id, size=300)}} -- with size 300x300\n" +
|
||||
"{{dmsf_video(file_id, height=300)}} -- with height (auto width)\n" +
|
||||
"{{dmsf_video(file_id, width=300)}} -- with width (auto height)\n" +
|
||||
"{{dmsf_video(file_id, size=640x480)}} -- with and size 640x480"
|
||||
"{{dmsf_video(file_id, size=640x480)}} -- with size 640x480"
|
||||
macro :dmsf_video do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
args, options = extract_macro_options(args, :size, :width, :height, :title)
|
||||
file_id = args.first
|
||||
raise 'DMSF document ID required' unless file_id.present?
|
||||
size = options[:size]
|
||||
width = options[:width]
|
||||
height = options[:height]
|
||||
if file = DmsfFile.find_by(id: file_id)
|
||||
unless User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported video format' unless file.video?
|
||||
url = url_for(controller: :dmsf_files, action: 'view', id: file)
|
||||
if size && size.include?('%')
|
||||
video_tag url, controls: true, alt: file.title, width: size, height: size
|
||||
elsif height
|
||||
video_tag url, controls: true, alt: file.title, width: 'auto', height: height
|
||||
elsif width
|
||||
video_tag url, controls: true, alt: file.title, width: width, height: 'auto'
|
||||
else
|
||||
video_tag url, controls: true, alt: file.title, size: size
|
||||
end
|
||||
file = DmsfFile.visible.find args[0]
|
||||
unless User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported video format' unless file.video?
|
||||
url = view_dmsf_file_path(file)
|
||||
if size&.include?('%')
|
||||
video_tag url, controls: true, alt: file.title, width: size, height: size
|
||||
elsif height
|
||||
video_tag url, controls: true, alt: file.title, width: 'auto', height: height
|
||||
elsif width
|
||||
video_tag url, controls: true, alt: file.title, width: width, height: 'auto'
|
||||
else
|
||||
raise "Document ID #{file_id} not found"
|
||||
video_tag url, controls: true, alt: file.title, size: size
|
||||
end
|
||||
end
|
||||
|
||||
# dmsftn - link to an image thumbnail
|
||||
desc "Wiki DMSF thumbnail:\n\n" +
|
||||
"{{dmsftn(file_id)}} -- with default height 200(auto width)\n" +
|
||||
"{{dmsftn(file_id)}} -- with default height 200 (auto width)\n" +
|
||||
"{{dmsftn(file_id, size=300)}} -- with size 300x300\n" +
|
||||
"{{dmsftn(file_id, height=300)}} -- with height (auto width)\n" +
|
||||
"{{dmsftn(file_id, width=300)}} -- with width (auto height)\n" +
|
||||
"{{dmsftn(file_id, size=640x480)}} -- with and size 640x480"
|
||||
"{{dmsftn(file_id, size=640x480)}} -- with size 640x480"
|
||||
macro :dmsftn do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
args, options = extract_macro_options(args, :size, :width, :height, :title)
|
||||
file_id = args.first
|
||||
raise 'DMSF document ID required' unless file_id.present?
|
||||
size = options[:size]
|
||||
width = options[:width]
|
||||
height = options[:height]
|
||||
if file = DmsfFile.find_by(id: file_id)
|
||||
unless User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported image format' unless file.image?
|
||||
url = url_for(controller: :dmsf_files, action: 'view', id: file)
|
||||
file_view_url = url_for(controller: :dmsf_files, action: 'view', id: file, download: args[2])
|
||||
if size
|
||||
img = image_tag(url, alt: file.title, size: size)
|
||||
elsif height
|
||||
img = image_tag(url, alt: file.title, width: 'auto', height: height)
|
||||
elsif width
|
||||
img = image_tag(url, alt: file.title, width: width, height: 'auto')
|
||||
else
|
||||
img = image_tag(url, alt: file.title, width: 'auto', height: 200)
|
||||
end
|
||||
link_to img,
|
||||
file_view_url, target: '_blank',
|
||||
title: h(file.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_view_url}"
|
||||
else
|
||||
raise "Document ID #{file_id} not found"
|
||||
file = DmsfFile.visible.find args[0]
|
||||
unless User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
raise 'Not supported image format' unless file.image?
|
||||
url = view_dmsf_file_path(file)
|
||||
if size
|
||||
img = image_tag(url, alt: file.title, size: size)
|
||||
elsif height
|
||||
img = image_tag(url, alt: file.title, width: 'auto', height: height)
|
||||
elsif width
|
||||
img = image_tag(url, alt: file.title, width: width, height: 'auto')
|
||||
else
|
||||
img = image_tag(url, alt: file.title, width: 'auto', height: 200)
|
||||
end
|
||||
link_to img, url, target: '_blank', title: h(file.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{url}"
|
||||
end
|
||||
|
||||
# dmsfw - link to a document's approval workflow status
|
||||
@ -260,10 +246,10 @@ Redmine::WikiFormatting::Macros.register do
|
||||
"_file_id_ can be found in the document's details."
|
||||
macro :dmsfw do |obj, args|
|
||||
raise ArgumentError if args.length < 1 # Requires file id
|
||||
file = DmsfFile.visible.find args[0].strip
|
||||
if User.current && User.current.allowed_to?(:view_dmsf_files, file.project)
|
||||
file = DmsfFile.visible.find args[0]
|
||||
if User.current&.allowed_to?(:view_dmsf_files, file.project)
|
||||
raise ActiveRecord::RecordNotFound unless file.last_revision
|
||||
return file.last_revision.workflow_str(false)
|
||||
file.last_revision.workflow_str(false)
|
||||
else
|
||||
raise l(:notice_not_authorized)
|
||||
end
|
||||
|
||||
@ -79,9 +79,15 @@ RAILS_ENV=test REDMINE_LANG=en bundle exec rake redmine:load_default_data
|
||||
#RAILS_ENV=test bundle exec rake test
|
||||
|
||||
# Run DMSF tests
|
||||
# Standard tests
|
||||
bundle exec rake redmine:plugins:test:units NAME=redmine_dmsf RAILS_ENV=test
|
||||
bundle exec rake redmine:plugins:test:functionals NAME=redmine_dmsf RAILS_ENV=test
|
||||
bundle exec rake redmine:plugins:test:integration NAME=redmine_dmsf RAILS_ENV=test
|
||||
# Macros
|
||||
ruby plugin/redmine_dmsf/test/unit/lib/redmine_dmsf/dmsf_macros_test.rb RAILS_ENV=test
|
||||
# Helpers
|
||||
ruby plugin/redmine_dmsf/test/helpers/dmsf_helper_test.rb RAILS_ENV=test
|
||||
ruby plugin/redmine_dmsf/test/helpers/dmsf_queries_helper_test.rb RAILS_ENV=test
|
||||
|
||||
# Litmus
|
||||
|
||||
|
||||
24
test/fixtures/dmsf_file_revisions.yml
vendored
24
test/fixtures/dmsf_file_revisions.yml
vendored
@ -233,4 +233,26 @@ dmsf_file_revisions_011:
|
||||
dmsf_workflow_assigned_by_user_id: 1
|
||||
dmsf_workflow_started_by_user_id: 1
|
||||
digest: '81dc9bdb52d04dc20036dbd8313ed055'
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
created_at: 2017-04-18 14:52:27 +02:00
|
||||
|
||||
dmsf_file_revisions_012:
|
||||
id: 12
|
||||
dmsf_file_id: 6
|
||||
source_dmsf_file_revision_id: NULL
|
||||
name: 'test.mp4'
|
||||
disk_filename: 'test.mp4'
|
||||
size: 4
|
||||
mime_type: 'video/mp4'
|
||||
title: 'Video file'
|
||||
description: 'A video :-)'
|
||||
workflow: 0
|
||||
minor_version: 0
|
||||
major_version: 1
|
||||
comment: NULL
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
user_id: 1
|
||||
dmsf_workflow_assigned_by_user_id: NULL
|
||||
dmsf_workflow_started_by_user_id: NULL
|
||||
digest: '81dc9bdb52d04dc20036dbd8313ed055'
|
||||
created_at: 2022-02-03 13:39:27 +02:00
|
||||
2
test/fixtures/dmsf_files.yml
vendored
2
test/fixtures/dmsf_files.yml
vendored
@ -50,7 +50,7 @@ dmsf_files_006:
|
||||
id: 6
|
||||
project_id: 1
|
||||
dmsf_folder_id: 3
|
||||
name: 'test.txt'
|
||||
name: 'test.mp4'
|
||||
notification: false
|
||||
deleted: 0
|
||||
deleted_by_user_id: NULL
|
||||
|
||||
@ -23,9 +23,10 @@
|
||||
|
||||
module RedmineDmsf
|
||||
module Test
|
||||
|
||||
class HelperTest < ActiveSupport::TestCase
|
||||
|
||||
fixtures :users, :email_addresses, :projects
|
||||
fixtures :users, :email_addresses, :projects, :roles, :members, :member_roles
|
||||
|
||||
# Allow us to override the fixtures method to implement fixtures for our plugin.
|
||||
# Ultimately it allows for better integration without blowing redmine fixtures up,
|
||||
@ -45,11 +46,31 @@ module RedmineDmsf
|
||||
|
||||
def setup
|
||||
@jsmith = User.find 2
|
||||
@manager_role = Role.find_by(name: 'Manager')
|
||||
@developer_role = Role.find_by(name: 'Developer')
|
||||
[@manager_role, @developer_role].each do |role|
|
||||
role.add_permission! :view_dmsf_folders
|
||||
role.add_permission! :view_dmsf_files
|
||||
end
|
||||
@project1 = Project.find 1
|
||||
@folder1 = DmsfFolder.find 1
|
||||
@project1.enable_module! :dmsf
|
||||
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = nil
|
||||
Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = nil
|
||||
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
|
||||
FileUtils.cp_r File.join(File.expand_path('../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
|
||||
end
|
||||
|
||||
def teardown
|
||||
# Delete our tmp folder
|
||||
begin
|
||||
FileUtils.rm_rf DmsfFile.storage_path
|
||||
rescue => e
|
||||
Rails.logger.error e.message
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@ -27,4 +27,4 @@ require File.expand_path('../../../../test/test_helper', __FILE__)
|
||||
require_relative 'test_case'
|
||||
require_relative 'integration_test'
|
||||
require_relative 'unit_test'
|
||||
require_relative 'helper_test'
|
||||
require_relative 'helper_test'
|
||||
|
||||
402
test/unit/lib/redmine_dmsf/dmsf_macros_test.rb
Normal file
402
test/unit/lib/redmine_dmsf/dmsf_macros_test.rb
Normal file
@ -0,0 +1,402 @@
|
||||
# encoding: utf-8
|
||||
# frozen_string_literal: true
|
||||
#
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright © 2011-22 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.expand_path('../../../../test_helper', __FILE__)
|
||||
|
||||
class DmsfMacrosTest < RedmineDmsf::Test::HelperTest
|
||||
include ApplicationHelper
|
||||
include ActionView::Helpers
|
||||
include ActionDispatch::Routing
|
||||
include ERB::Util
|
||||
include Rails.application.routes.url_helpers
|
||||
include ActionView::Helpers::UrlHelper
|
||||
|
||||
fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :dmsf_folders, :dmsf_files,
|
||||
:dmsf_file_revisions
|
||||
|
||||
def setup
|
||||
super
|
||||
User.current = @jsmith
|
||||
default_url_options[:host] = 'http://example.com'
|
||||
@file1 = DmsfFile.find_by(id: 1)
|
||||
@file6 = DmsfFile.find_by(id: 6) # video
|
||||
@file7 = DmsfFile.find_by(id: 7) # image
|
||||
@folder1 = DmsfFolder.find_by(id: 1)
|
||||
end
|
||||
|
||||
# {{dmsf(file_id [, title [, revision_id]])}}
|
||||
def test_macro_dmsf
|
||||
text = textilizable("{{dmsf(#{@file1.id})}}")
|
||||
assert text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_file_not_found
|
||||
text = textilizable("{{dmsf(99)}}")
|
||||
assert text.include?('Error')
|
||||
end
|
||||
|
||||
def test_macro_dmsf_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsf(#{@file1.id})}}")
|
||||
assert !text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsf(#{@file1.id})}}")
|
||||
assert !text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_custom_title
|
||||
text = textilizable("{{dmsf(#{@file1.id}, xyz)}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_custom_title_aprostrophes
|
||||
text = textilizable("{{dmsf(#{@file1.id}, 'xyz')}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_custom_title_and_revision
|
||||
text = textilizable("{{dmsf(#{@file1.id}, '', 1)}}")
|
||||
assert text.include?('download=1'), text
|
||||
end
|
||||
|
||||
# {{dmsff([folder_id [, title]])}}
|
||||
def test_macro_dmsff
|
||||
text = textilizable("{{dmsff(#{@folder1.id})}}")
|
||||
assert text.end_with?(">#{@folder1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsff_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_folders
|
||||
text = textilizable("{{dmsf(#{@folder1.id})}}")
|
||||
assert !text.end_with?(">#{@folder1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsff_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsf(#{@folder1.id})}}")
|
||||
assert !text.end_with?(">#{@folder1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsff_custom_title
|
||||
text = textilizable("{{dmsf(#{@folder1.id}, xyz)}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
def test_macro_dmsff_custom_title_aprostrophes
|
||||
text = textilizable("{{dmsf(#{@folder1.id}, 'xyz')}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
# {{dmsfd(document_id [, title])}}
|
||||
def test_macro_dmsfd
|
||||
text = textilizable("{{dmsfd(#{@file1.id})}}")
|
||||
assert text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsfd_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsfd(#{@file1.id})}}")
|
||||
assert !text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsfd_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsfd(#{@file1.id})}}")
|
||||
assert !text.end_with?(">#{@file1.title}</a></p>"), text
|
||||
end
|
||||
|
||||
def test_macro_dmsfd_custom_title
|
||||
text = textilizable("{{dmsfd(#{@file1.id}, xyz)}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
def test_macro_dmsfd_custom_title_aprostrophes
|
||||
text = textilizable("{{dmsfd(#{@file1.id}, 'xyz')}}")
|
||||
assert text.end_with?('>xyz</a></p>'), text
|
||||
end
|
||||
|
||||
# {{dmsfdesc(document_id)}}
|
||||
def test_macro_dmsfdesc
|
||||
rev = @file1.last_revision
|
||||
rev.description = 'blabla'
|
||||
rev.save
|
||||
text = textilizable("{{dmsfdesc(#{@file1.id})}}")
|
||||
assert_equal "<p><p>#{@file1.description}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsfdesc_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
rev = @file1.last_revision
|
||||
rev.description = 'blabla'
|
||||
rev.save
|
||||
text = textilizable("{{dmsfdesc(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{@file1.description}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsfdesc_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
rev = @file1.last_revision
|
||||
rev.description = 'blabla'
|
||||
rev.save
|
||||
text = textilizable("{{dmsfdesc(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{@file1.description}</p></p>", text
|
||||
end
|
||||
|
||||
# {{dmsfversion(document_id)}}
|
||||
def test_macro_dmsfdversion
|
||||
text = textilizable("{{dmsfversion(#{@file1.id})}}")
|
||||
assert_equal "<p><p>#{@file1.version}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsfdversion_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsfversion(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{@file1.version}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsfdversion_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsfversion(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{@file1.version}</p></p>", text
|
||||
end
|
||||
|
||||
# {{dmsflastupdate(document_id)}}
|
||||
def test_macro_dmsflastupdate
|
||||
text = textilizable("{{dmsflastupdate(#{@file1.id})}}")
|
||||
assert_equal "<p><p>#{format_time(@file1.last_revision.updated_at)}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsflastupdate_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsflastupdate(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{format_time(@file1.last_revision.updated_at)}</p></p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsflastupdate_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsflastupdate(#{@file1.id})}}")
|
||||
assert_not_equal "<p><p>#{format_time(@file1.last_revision.updated_at)}</p></p>", text
|
||||
end
|
||||
|
||||
# {{dmsft(document_id)}}
|
||||
def test_macro_dmsft
|
||||
text = textilizable("{{dmsft(#{@file1.id}, 1)}}")
|
||||
assert_equal "<p>#{@file1.preview(1)}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsft_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsft(#{@file1.id}, 1)}}")
|
||||
assert_not_equal "<p>#{@file1.preview(1)}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsft_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsft(#{@file1.id}, 1)}}")
|
||||
assert_not_equal "<p>#{@file1.preview(1)}</p>", text
|
||||
end
|
||||
|
||||
# {{dmsf_image(file_id)}}
|
||||
def test_macro_dmsf_image
|
||||
text = textilizable("{{dmsf_image(#{@file7.id})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, size: nil)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_size
|
||||
size = '50%'
|
||||
text = textilizable("{{dmsf_image(#{@file7.id}, size=#{size})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, width: size, height: size)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
size = '300'
|
||||
text = textilizable("{{dmsf_image(#{@file7.id}, size=#{size})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, width: size, height: size)
|
||||
# TODO: arguments src and with and height are swapped
|
||||
#assert_equal "<p>#{link}</p>", text
|
||||
size = '640x480'
|
||||
text = textilizable("{{dmsf_image(#{@file7.id}, size=#{size})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, width: '640', height: '480')
|
||||
# TODO: arguments src and with and height are swapped
|
||||
#assert_equal "<p>#{link}</p>", text
|
||||
height = '480'
|
||||
text = textilizable("{{dmsf_image(#{@file7.id}, height=#{height})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, width: 'auto', height: height)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
width = '480'
|
||||
text = textilizable("{{dmsf_image(#{@file7.id}, width=#{height})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, width: width, height: 'auto')
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsf_image(#{@file7.id})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, size: nil)
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsf_image(#{@file7.id})}}")
|
||||
link = image_tag(view_dmsf_file_path(@file7), alt: @file7.title, size: nil)
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_not_image
|
||||
text = textilizable("{{dmsf_image(#{@file1.id})}}")
|
||||
assert text.include?('Not supported image format')
|
||||
end
|
||||
|
||||
# {{dmsf_video(file_id)}}
|
||||
def test_macro_dmsf_video
|
||||
text = textilizable("{{dmsf_video(#{@file6.id})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_size
|
||||
size = '50%'
|
||||
text = textilizable("{{dmsf_video(#{@file6.id}, size=#{size})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title, width: size, height: size)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
size = '300'
|
||||
text = textilizable("{{dmsf_video(#{@file6.id}, size=#{size})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title, width: size, height: size)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
size = '640x480'
|
||||
text = textilizable("{{dmsf_video(#{@file6.id}, size=#{size})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title, width: '640', height: '480')
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
height = '480'
|
||||
text = textilizable("{{dmsf_video(#{@file6.id}, height=#{height})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title, width: 'auto', height: height)
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
width = '480'
|
||||
text = textilizable("{{dmsf_video(#{@file6.id}, width=#{height})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title, width: width, height: 'auto')
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsf_video(#{@file6.id})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title)
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_image_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsf_video(#{@file6.id})}}")
|
||||
link = video_tag(view_dmsf_file_path(@file6), controls: true, alt: @file6.title)
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsf_video_not_video
|
||||
text = textilizable("{{dmsf_video(#{@file7.id})}}")
|
||||
assert text.include?('Not supported video format'), text
|
||||
end
|
||||
|
||||
# {{dmsftn(file_id)}}
|
||||
def test_macro_dmsftn
|
||||
text = textilizable("{{dmsftn(#{@file7.id})}}")
|
||||
url = view_dmsf_file_path(@file7)
|
||||
img = image_tag(url, alt: @file7.title, width: 'auto', height: 200)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsftn
|
||||
url = view_dmsf_file_path(@file7)
|
||||
size = '300'
|
||||
text = textilizable("{{dmsftn(#{@file7.id}, size=#{size})}}")
|
||||
img = image_tag(url, alt: @file7.title, size: size)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
size = '640x480'
|
||||
text = textilizable("{{dmsftn(#{@file7.id}, size=#{size})}}")
|
||||
img = image_tag(url, alt: @file7.title, width: 640, height: 480)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
# TODO: arguments src and with and height are swapped
|
||||
#assert_equal "<p>#{link}</p>", text
|
||||
height = '480'
|
||||
text = textilizable("{{dmsftn(#{@file7.id}, height=#{height})}}")
|
||||
img = image_tag(url, alt: @file7.title, width: 'auto', height: 480)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
width = '640'
|
||||
text = textilizable("{{dmsftn(#{@file7.id}, width=#{width})}}")
|
||||
img = image_tag(url, alt: @file7.title, width: 640, height: 'auto')
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsftn_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsftn(#{@file7.id})}}")
|
||||
url = view_dmsf_file_path(@file7)
|
||||
img = image_tag(url, alt: @file7.title, width: 'auto', height: 200)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsftn_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsftn(#{@file7.id})}}")
|
||||
url = view_dmsf_file_path(@file7)
|
||||
img = image_tag(url, alt: @file7.title, width: 'auto', height: 200)
|
||||
link = link_to(img, url, target: '_blank', title: h(@file7.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{@file7.last_revision.detect_content_type}:#{h(@file7.name)}:#{url}")
|
||||
assert_not_equal "<p>#{link}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsftn_not_image
|
||||
text = textilizable("{{dmsftn(#{@file1.id})}}")
|
||||
assert text.include?('Not supported image format')
|
||||
end
|
||||
|
||||
# {{dmsfw(file_id)}}
|
||||
def test_macro_dmsfw
|
||||
text = textilizable("{{dmsfw(#{@file1.id})}}")
|
||||
assert_equal "<p>#{@file1.last_revision.workflow_str(false)}</p>", text
|
||||
end
|
||||
|
||||
def test_macro_dmsfw_no_permissions
|
||||
@manager_role.remove_permission! :view_dmsf_files
|
||||
text = textilizable("{{dmsfw(#{@file1.id})}}")
|
||||
assert text.include?('Error'), text
|
||||
end
|
||||
|
||||
def test_macro_dmsfw_dmsf_off
|
||||
@project1.disable_module! :dmsf
|
||||
text = textilizable("{{dmsfw(#{@file1.id})}}")
|
||||
assert text.include?('Error'), text
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user