unit tests

This commit is contained in:
Karel Pičman 2015-04-01 13:55:23 +02:00
parent fbe8311260
commit 8081983b4d
4 changed files with 58 additions and 24 deletions

View File

@ -33,11 +33,13 @@ class DmsfLink < ActiveRecord::Base
validate :validate_url
def validate_url
begin
URI.parse self.external_url
rescue URI::InvalidURIError
errors.add :external_url, :invalid
end
if self.target_type == 'DmsfUrl'
begin
URI.parse self.external_url
rescue URI::InvalidURIError
errors.add :external_url, :invalid
end
end
end
if (Rails::VERSION::MAJOR > 3)

View File

@ -1,6 +1,8 @@
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-14 Karel Pičman <karel.picman@lbcfree.net>
# Copyright (C) 2011-15 Karel Pičman <karel.picman@lbcfree.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -175,7 +177,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
assert_redirected_to dmsf_folder_path(:id => @project1.id, :folder_id => @folder1.id)
# 2. Folder link in a folder from another root folder
assert_difference 'DmsfLink.count', +0 do
assert_difference 'DmsfLink.count', +1 do
post :create, :dmsf_link => {
:project_id => @project1.id,
:dmsf_folder_id => @folder1.id,
@ -184,7 +186,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
:type => 'link_from'
}
end
assert_response :success
assert_redirected_to dmsf_folder_path(:id => @project1.id, :folder_id => @folder1.id)
# 3. Folder link in a root folder from another folder
assert_difference 'DmsfLink.count', +1 do
@ -199,7 +201,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
assert_redirected_to dmsf_folder_path(:id => @project1.id)
# 4. Folder link in a root folder from another root folder
assert_difference 'DmsfLink.count', +0 do
assert_difference 'DmsfLink.count', +1 do
post :create, :dmsf_link => {
:project_id => @project1.id,
:target_project_id => @project2.id,
@ -207,7 +209,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
:type => 'link_from'
}
end
assert_response :success
assert_redirected_to dmsf_folder_path(:id => @project1.id)
end
def test_create_file_link_to
@ -264,6 +266,19 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
assert_redirected_to dmsf_file_path(@file6)
end
def test_create_external_link_from
assert_difference 'DmsfLink.count', +1 do
post :create, :dmsf_link => {
:project_id => @project1.id,
:target_project_id => @project1.id,
:name => 'file_link',
:external_link => 'true',
:type => 'link_from'
}
end
assert_redirected_to dmsf_folder_path(:id => @project1.id)
end
def test_create_folder_link_to
# 1. Folder link to a root folder
assert_difference 'DmsfLink.count', +1 do

View File

@ -1,6 +1,8 @@
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
# Copyright (C) 2011-15 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
@ -28,11 +30,12 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
def setup
@user_admin = User.find_by_id 1 # Redmine admin
@user_member = User.find_by_id 2 # John Smith - manager
@user_non_member = User.find_by_id 3 #Dave Lopper
@user_non_member = User.find_by_id 3 # Dave Lopper
@request.session[:user_id] = @user_member.id
@role_manager = Role.find_by_name('Manager')
@role_manager.add_permission! :file_manipulation
@role_manager.add_permission! :manage_workflows
@role_manager.add_permission! :file_approval
@wfs1 = DmsfWorkflowStep.find_by_id 1 # step 1
@wfs2 = DmsfWorkflowStep.find_by_id 2 # step 2
@wfs3 = DmsfWorkflowStep.find_by_id 3 # step 1
@ -96,11 +99,11 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
@role_manager.remove_permission! :manage_workflows
get :index, :project_id => @project1.id
assert_response :forbidden
@role_manager.add_permission! :manage_workflows
@role_manager.add_permission! :file_approval
@revision2.dmsf_workflow_id = @wf1.id
get :start, :id => @revision2.dmsf_workflow_id,:dmsf_file_revision_id => @revision2.id
assert_response :redirect
@role_manager.remove_permission! :file_manipulation
@role_manager.remove_permission! :file_approval
get :start, :id => @revision2.dmsf_workflow_id,:dmsf_file_revision_id => @revision2.id
assert_response :forbidden
@ -131,13 +134,13 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
def test_create
assert_difference 'DmsfWorkflow.count', +1 do
post :create, :name => 'wf3', :project_id => @project1.id
post :create, :dmsf_workflow => {:name => 'wf3'}, :project_id => @project1.id
end
assert_redirected_to settings_project_path(@project1, :tab => 'dmsf_workflow')
end
def test_update
put :update, :id => @wf1.id, :name => 'wf1a'
put :update, :id => @wf1.id, :dmsf_workflow => {:name => 'wf1a'}
@wf1.reload
assert_equal 'wf1a', @wf1.name
end

View File

@ -1,6 +1,8 @@
# encoding: utf-8
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-14 Karel Pičman <karel.picman@lbcfree.net>
# Copyright (C) 2011-15 Karel Pičman <karel.picman@lbcfree.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -53,7 +55,7 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest
:project_id => @project1.id,
:created_at => DateTime.now(),
:updated_at => DateTime.now())
assert folder_link.save
assert folder_link.save, folder_link.errors.full_messages.to_sentence
# File link
file_link = DmsfLink.new(
@ -64,7 +66,18 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest
:project_id => @project1.id,
:created_at => DateTime.now(),
:updated_at => DateTime.now())
assert file_link.save
assert file_link.save, file_link.errors.full_messages.to_sentence
# External link
external_link = DmsfLink.new(
:target_project_id => @project1.id,
:external_url => 'http://www.redmine.org/plugins/dmsf',
:target_type => 'DmsfUrl',
:name => 'DMSF plugin',
:project_id => @project1.id,
:created_at => DateTime.now(),
:updated_at => DateTime.now())
assert external_link.save, external_link.errors.full_messages.to_sentence
end
def test_validate_name_length
@ -78,11 +91,12 @@ class DmsfLinksTest < RedmineDmsf::Test::UnitTest
assert !@folder_link.save
assert_equal 1, @folder_link.errors.count
end
def test_validate_target_id_presence
@folder_link.target_id = nil
assert !@folder_link.save
assert_equal 1, @folder_link.errors.count
def test_validate_external_url
@file_link.target_type = 'DmsfUrl'
@file_link.external_url = nil
assert !@file_link.save
assert_equal 1, @file_link.errors.count
end
def test_belongs_to_project