3 class CollectionTest < ActiveSupport::TestCase
4 include CollectionsHelper
6 test 'recognize empty blob locator' do
7 ['d41d8cd98f00b204e9800998ecf8427e+0',
8 'd41d8cd98f00b204e9800998ecf8427e',
9 'd41d8cd98f00b204e9800998ecf8427e+0+Xyzzy'].each do |x|
10 assert_equal true, Collection.is_empty_blob_locator?(x)
12 ['d41d8cd98f00b204e9800998ecf8427e0',
13 'acbd18db4cc2f85cedef654fccc4a4d8+3',
14 'acbd18db4cc2f85cedef654fccc4a4d8+0'].each do |x|
15 assert_equal false, Collection.is_empty_blob_locator?(x)
19 def get_files_tree(coll_name)
21 Collection.find(api_fixture('collections')[coll_name]['uuid']).files_tree
24 test "easy files_tree" do
25 files_in = lambda do |dirname|
26 (1..3).map { |n| [dirname, "file#{n}", 0] }
28 assert_equal([['.', 'dir1', nil], ['./dir1', 'subdir', nil]] +
29 files_in['./dir1/subdir'] + files_in['./dir1'] +
30 [['.', 'dir2', nil]] + files_in['./dir2'] + files_in['.'],
31 get_files_tree('multilevel_collection_1'),
32 "Collection file tree was malformed")
35 test "files_tree with files deep in subdirectories" do
36 # This test makes sure files_tree generates synthetic directory entries.
37 # The manifest doesn't list directories with no files.
38 assert_equal([['.', 'dir1', nil], ['./dir1', 'sub1', nil],
39 ['./dir1/sub1', 'a', 0], ['./dir1/sub1', 'b', 0],
40 ['.', 'dir2', nil], ['./dir2', 'sub2', nil],
41 ['./dir2/sub2', 'c', 0], ['./dir2/sub2', 'd', 0]],
42 get_files_tree('multilevel_collection_2'),
43 "Collection file tree was malformed")
46 test "portable_data_hash never editable" do
47 refute(Collection.new.attribute_editable?("portable_data_hash", :ever))
50 test "admin can edit name" do
52 assert(find_fixture(Collection, "foo_file").attribute_editable?("name"),
53 "admin not allowed to edit collection name")
56 test "project owner can edit name" do
58 assert(find_fixture(Collection, "foo_collection_in_aproject")
59 .attribute_editable?("name"),
60 "project owner not allowed to edit collection name")
63 test "project admin can edit name" do
64 use_token :subproject_admin
65 assert(find_fixture(Collection, "baz_file_in_asubproject")
66 .attribute_editable?("name"),
67 "project admin not allowed to edit collection name")
70 test "project viewer cannot edit name" do
71 use_token :project_viewer
72 refute(find_fixture(Collection, "foo_collection_in_aproject")
73 .attribute_editable?("name"),
74 "project viewer allowed to edit collection name")
78 ["filename.csv", true],
79 ["filename.fa", true],
80 ["filename.fasta", true],
81 ["filename.seq", true], # another fasta extension
82 ["filename.go", true],
83 ["filename.htm", true],
84 ["filename.html", true],
85 ["filename.json", true],
86 ["filename.md", true],
87 ["filename.pdf", true],
88 ["filename.py", true],
90 ["filename.sam", true],
91 ["filename.sh", true],
92 ["filename.txt", true],
93 ["filename.tiff", true],
94 ["filename.tsv", true],
95 ["filename.vcf", true],
96 ["filename.xml", true],
97 ["filename.xsl", true],
98 ["filename.yml", true],
100 ["filename.bam", false],
102 ].each do |file_name, preview_allowed|
103 test "verify '#{file_name}' is allowed for preview #{preview_allowed}" do
104 assert_equal preview_allowed, preview_allowed_for(file_name)