REST API and pagination on collection resources #850
This commit is contained in:
parent
5bcdf6288a
commit
3791875c08
@ -662,20 +662,35 @@ class DmsfController < ApplicationController
|
||||
@url_links = []
|
||||
else
|
||||
if @folder
|
||||
@subfolders = @folder.dmsf_folders.visible.to_a
|
||||
@subfolders = @folder.dmsf_folders.visible
|
||||
@files = @folder.dmsf_files.visible
|
||||
@dir_links = @folder.folder_links.visible
|
||||
@file_links = @folder.file_links.visible
|
||||
@url_links = @folder.url_links.visible
|
||||
@locked_for_user = @folder.locked_for_user?
|
||||
else
|
||||
@subfolders = @project.dmsf_folders.visible.to_a
|
||||
@subfolders = @project.dmsf_folders.visible
|
||||
@files = @project.dmsf_files.visible
|
||||
@dir_links = @project.folder_links.visible
|
||||
@file_links = @project.file_links.visible
|
||||
@url_links = @project.url_links.visible
|
||||
@locked_for_user = false
|
||||
end
|
||||
# Limit and offset for REST API calls
|
||||
if params[:limit].present?
|
||||
@subfolders = @subfolders.limit(params[:limit])
|
||||
@files = @files.limit(params[:limit])
|
||||
@dir_links = @dir_links.limit(params[:limit])
|
||||
@file_links = @file_links.limit(params[:limit])
|
||||
@url_links = @url_links.limit(params[:limit])
|
||||
end
|
||||
if params[:offset].present?
|
||||
@subfolders = @subfolders.offset(params[:offset])
|
||||
@files = @files.offset(params[:offset])
|
||||
@dir_links = @dir_links.offset(params[:offset])
|
||||
@file_links = @file_links.offset(params[:offset])
|
||||
@url_links = @url_links.offset(params[:offset])
|
||||
end
|
||||
end
|
||||
# Remove system folders you are not allowed to see because you are not allowed to see the issue or you are not
|
||||
# permitted to see system folders
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
# 1. List of documents in a given folder or the root folder
|
||||
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/projects/12/dmsf.xml
|
||||
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/projects/12/dmsf.xml?folder_id=5155
|
||||
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} "http://localhost:3000/projects/12/dmsf.xml?limit=2&offset=1"
|
||||
|
||||
# 2. Get a document
|
||||
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/dmsf/files/17216.xml
|
||||
|
||||
@ -32,6 +32,7 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
|
||||
@jsmith = User.find_by_id 2
|
||||
@file1 = DmsfFile.find_by_id 1
|
||||
@folder1 = DmsfFolder.find_by_id 1
|
||||
@folder6 = DmsfFolder.find_by_id 6
|
||||
Setting.rest_api_enabled = '1'
|
||||
@role = Role.find_by_id 1
|
||||
@project1 = Project.find_by_id 1
|
||||
@ -42,6 +43,7 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
|
||||
assert_kind_of User, @admin
|
||||
assert_kind_of User, @jsmith
|
||||
assert_kind_of DmsfFolder, @folder1
|
||||
assert_kind_of DmsfFolder, @folder6
|
||||
assert_kind_of DmsfFile, @file1
|
||||
assert_kind_of Role, @role
|
||||
assert_kind_of Project, @project1
|
||||
@ -55,31 +57,76 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
|
||||
assert_response :success
|
||||
assert_equal 'application/xml', @response.content_type
|
||||
# <?xml version="1.0" encoding="UTF-8"?>
|
||||
# <dmsf>
|
||||
# <dmsf_folders total_count="2" type="array">
|
||||
# <folder>
|
||||
# <dmsf>
|
||||
# <dmsf_folders total_count="3" type="array">
|
||||
# <folder>
|
||||
# <id>1</id>
|
||||
# <title>folder1</title>
|
||||
# </folder>
|
||||
# <folder>
|
||||
# <id>6</id>
|
||||
# <title>folder1</title>
|
||||
# </folder>
|
||||
# <folder>
|
||||
# <id>6</id>
|
||||
# <title>folder6</title>
|
||||
# </folder>
|
||||
# </dmsf_folders>
|
||||
# <dmsf_files total_count="1" type="array">
|
||||
# <file>
|
||||
# </folder>
|
||||
# <folder>
|
||||
# <id>7</id>
|
||||
# <title>folder7</title>
|
||||
# </folder>
|
||||
# </dmsf_folders>
|
||||
# <dmsf_files total_count="4" type="array">
|
||||
# <file>
|
||||
# <id>9</id>
|
||||
# <name>myfile.txt</name>
|
||||
# </file>
|
||||
# <file>
|
||||
# <id>8</id>
|
||||
# <name>test.pdf</name>
|
||||
# </file>
|
||||
# <file>
|
||||
# <id>1</id>
|
||||
# <name>test.txt</name>
|
||||
# </file>
|
||||
# </dmsf_files>
|
||||
# <dmsf_links total_count="0" type="array">
|
||||
# </dmsf_links>
|
||||
# <name>test.txt</name>
|
||||
# </file>
|
||||
# <file>
|
||||
# <id>10</id>
|
||||
# <name>zero.txt</name>
|
||||
# </file>
|
||||
# </dmsf_files>
|
||||
# <dmsf_links total_count="0" type="array">
|
||||
# </dmsf_links>
|
||||
# </dmsf>
|
||||
assert_select 'dmsf > dmsf_folders > folder > id', :text => @folder1.id.to_s
|
||||
assert_select 'dmsf > dmsf_folders > folder > title', :text => @folder1.title.to_s
|
||||
assert_select 'dmsf > dmsf_files > file > id', :text => @file1.id.to_s
|
||||
assert_select 'dmsf > dmsf_files > file > name', :text => @file1.name.to_s
|
||||
end
|
||||
|
||||
def test_list_folder_limit_and_offset
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
token = Token.create!(:user => @jsmith, :action => 'api')
|
||||
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} "http://localhost:3000/dmsf/files/17216.xml?limit=1&offset=1"
|
||||
get "/projects/#{@project1.id}/dmsf.xml?key=#{token.value}&limit=1&offset=2"
|
||||
assert_response :success
|
||||
assert_equal 'application/xml', @response.content_type
|
||||
# <?xml version="1.0" encoding="UTF-8"?>
|
||||
# <dmsf>
|
||||
# <dmsf_folders total_count="1" type="array">
|
||||
# <folder>
|
||||
# <id>6</id>
|
||||
# <title>folder6</title>
|
||||
# </folder>
|
||||
# </dmsf_folders>
|
||||
# <dmsf_files total_count="1" type="array">
|
||||
# <file>
|
||||
# <id>1</id>
|
||||
# <name>test.txt</name>
|
||||
# </file>
|
||||
# </dmsf_files>
|
||||
# <dmsf_links total_count="0" type="array">
|
||||
# </dmsf_links>
|
||||
# </dmsf>
|
||||
assert_select 'dmsf > dmsf_folders', :count => 1
|
||||
assert_select 'dmsf > dmsf_folders > folder > id', :text => @folder6.id.to_s
|
||||
assert_select 'dmsf > dmsf_folders > folder > title', :text => @folder6.title.to_s
|
||||
assert_select 'dmsf > dmsf_files', :count => 1
|
||||
end
|
||||
|
||||
def test_create_folder
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user