d936db053ab6459889139a956fe383e67f00ac9e
[arvados.git] / apps / workbench / test / unit / arvados_resource_list_test.rb
1 require 'test_helper'
2
3 class ResourceListTest < ActiveSupport::TestCase
4
5   test 'links_for on a resource list that does not return links' do
6     use_token :active
7     results = Specimen.all
8     assert_equal [], results.links_for(api_fixture('users')['active']['uuid'])
9   end
10
11   test 'links_for returns all link classes (simulated results)' do
12     project_uuid = api_fixture('groups')['aproject']['uuid']
13     specimen_uuid = api_fixture('specimens')['in_aproject']['uuid']
14     api_response = {
15       kind: 'arvados#specimenList',
16       links: [{kind: 'arvados#link',
17                 uuid: 'zzzzz-o0j2j-asdfasdfasdfas1',
18                 tail_uuid: project_uuid,
19                 head_uuid: specimen_uuid,
20                 link_class: 'foo',
21                 name: 'Bob'},
22               {kind: 'arvados#link',
23                 uuid: 'zzzzz-o0j2j-asdfasdfasdfas2',
24                 tail_uuid: project_uuid,
25                 head_uuid: specimen_uuid,
26                 link_class: nil,
27                 name: 'Clydesdale'}],
28       items: [{kind: 'arvados#specimen',
29                 uuid: specimen_uuid}]
30     }
31     arl = ArvadosResourceList.new
32     arl.results = ArvadosApiClient.new.unpack_api_response(api_response)
33     assert_equal(['foo', nil],
34                  (arl.
35                   links_for(specimen_uuid).
36                   collect { |x| x.link_class }),
37                  "Expected links_for to return all link_classes")
38   end
39
40   test 'get all items by default' do
41     use_token :admin
42     a = 0
43     Collection.where(owner_uuid: 'zzzzz-j7d0g-0201collections').each do
44       a += 1
45     end
46     assert_equal 201, a
47   end
48
49   test 'prefetch all items' do
50     use_token :admin
51     a = 0
52     Collection.where(owner_uuid: 'zzzzz-j7d0g-0201collections').each do
53       a += 1
54     end
55     assert_equal 201, a
56   end
57
58   test 'get limited items' do
59     use_token :admin
60     a = 0
61     Collection.where(owner_uuid: 'zzzzz-j7d0g-0201collections').limit(51).each do
62       a += 1
63     end
64     assert_equal 51, a
65   end
66
67   test 'get single page of items' do
68     use_token :admin
69     a = 0
70     c = Collection.where(owner_uuid: 'zzzzz-j7d0g-0201collections').fetch_multiple_pages(false)
71     c.each do
72       a += 1
73     end
74
75     assert_operator a, :<, 201
76     assert_equal c.result_limit, a
77   end
78
79 end