djatoka 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,64 @@
1
+ require 'helper'
2
+
3
+ class TestDjatokaCommon < Test::Unit::TestCase
4
+
5
+ context 'A Djatoka Resolver' do
6
+ with_a_resolver do
7
+ setup do
8
+ @region = Djatoka::Region.new(@resolver, @identifier)
9
+ end
10
+ should 'create a query for a 75x75 version of the image' do
11
+ assert_equal '0,874,105,105', @region.smallbox.query.region
12
+ assert_equal '75', @region.smallbox.query.scale
13
+ end
14
+
15
+ should 'return a String for a smallbox URL' do
16
+ assert @region.smallbox_url.is_a? String
17
+ assert @region.smallbox_url.include? 'http://african.lanl.gov'
18
+ assert @region.smallbox_url.include? 'svc.region=0%2C874%2C105%2C105'
19
+ end
20
+
21
+ should 'return a uri for a small square version of the image' do
22
+ assert_equal '0,874,105,105', @region.smallbox.uri.query_values['svc.region']
23
+ end
24
+
25
+ should 'create a query for a square version of the image' do
26
+ assert_equal '0,874,3372,3372', @region.square.query.region
27
+ assert_equal nil, @region.square.query.scale
28
+ end
29
+ should 'return a uri for a square version of the image' do
30
+ assert_equal '0,874,3372,3372', @region.square_uri.query_values['svc.region']
31
+ assert_equal nil, @region.square_uri.query_values['svc.scale']
32
+ end
33
+ should 'return a url for a square version of the image' do
34
+ assert @region.square_url.is_a? String
35
+ assert @region.square_url.include? 'http://african.lanl.gov'
36
+ assert @region.square_url.include? 'svc.region=0%2C874%2C3372%2C3372'
37
+ end
38
+ should 'create a query for a square version of the image at a good level' do
39
+ @region.scale('555')
40
+ assert_equal '0,874,843,843', @region.square.query.region
41
+ assert_equal '555', @region.square.query.scale
42
+ assert_equal '4', @region.square.query.level
43
+ end
44
+
45
+ should 'pick the best level' do
46
+ metadata = Djatoka::Metadata.new(@resolver, @identifier).perform
47
+ @region.scale('200')
48
+ best_level = @region.pick_best_level(metadata)
49
+ assert_equal 2, best_level
50
+ end
51
+
52
+ context 'an image which is higher than it is wider' do
53
+ setup do
54
+ @region = Djatoka::Region.new(@resolver, 'info:lanl-repo/ds/b820f537-26a1-4af8-b86a-e7a4cac6187a')
55
+ end
56
+ should 'crop appropriately into a square' do
57
+ assert_equal '513,0,4093,4093', @region.square.query.region
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+ end
64
+
@@ -0,0 +1,28 @@
1
+ require 'helper'
2
+
3
+ class TestDjatoka < Test::Unit::TestCase
4
+ should 'allow Djatoka.use_curb to be set' do
5
+ Djatoka.use_curb=true
6
+ assert Djatoka.use_curb?
7
+ end
8
+
9
+ with_a_resolver do
10
+ should 'be able to set Djatoka.resolver to a Djatoka::Resolver' do
11
+ Djatoka.resolver = @resolver
12
+ assert Djatoka.resolver.is_a? Djatoka::Resolver
13
+ end
14
+
15
+ should 'be able to set Djatoka.resolver to a URL and get a Djatoka::Resolver' do
16
+ Djatoka.resolver = 'http://african.lanl.gov/adore-djatoka/resolver'
17
+ assert Djatoka.resolver.is_a? Djatoka::Resolver
18
+ assert_equal 'http://african.lanl.gov/adore-djatoka/resolver', Djatoka.resolver.url
19
+ end
20
+
21
+ should_eventually 'not be able to set a Djatoka.resolver to a bad string' do
22
+ Djatoka.resolver = 'asdf'
23
+ assert Djatoka.resolver.nil?
24
+ end
25
+ end
26
+
27
+ end
28
+
@@ -0,0 +1,84 @@
1
+ require 'helper'
2
+
3
+ class TestDjatokaMetadata < Test::Unit::TestCase
4
+ with_a_resolver do
5
+ context 'a metadata object' do
6
+ setup do
7
+ @metadata_obj = @resolver.metadata(@identifier)
8
+ @metadata = @metadata_obj.perform
9
+ end
10
+
11
+ should 'create a metadata object' do
12
+ assert @metadata.is_a? Djatoka::Metadata
13
+ end
14
+
15
+ should "create a metadata URL for an identifier" do
16
+ assert @metadata.url.include? 'http://african.lanl.gov/adore-djatoka/resolver?'
17
+ assert @metadata.url.include? 'url_ver=Z39.88-2004'
18
+ assert @metadata.url.include? '&svc_id=info%3Alanl-repo%2Fsvc%2FgetMetadata'
19
+ assert @metadata.url.include? '&rft_id=info%3Alanl-repo%2Fds%2F5aa182c2-c092-4596-af6e-e95d2e263de3'
20
+ end
21
+
22
+ should 'create a metadata uri for an identifier' do
23
+ uri = @metadata.uri
24
+ assert_equal 'african.lanl.gov', uri.host
25
+ end
26
+
27
+ should "return imagefile metadata for an identifier" do
28
+ assert_equal '/lanl/data/loc/cc5fc4f7-e50a-455f-b3ce-a6a8b54824e6/WEJLNXSBWO7LPLC7Z6DITFX7A45XR3GS.jp2',
29
+ @metadata.imagefile
30
+ end
31
+
32
+ should 'return an identifier for a good request' do
33
+ assert_equal @identifier,
34
+ @metadata.identifier
35
+ end
36
+
37
+ should 'return a height for a good request' do
38
+ assert_equal '3372', @metadata.height
39
+ end
40
+
41
+ should 'return a width for a good request' do
42
+ assert_equal '5120', @metadata.width
43
+ end
44
+
45
+ should 'return an OK status for a good request' do
46
+ metadata = @metadata.status
47
+ end
48
+
49
+ should 'return a nil for a bad request' do
50
+ metadata = @resolver.metadata('asdf')
51
+ assert_equal nil, metadata.status
52
+ end
53
+ end #context metadata response
54
+
55
+ context 'using net::http' do
56
+ should 'return a height for a good request' do
57
+ Djatoka.use_curb=false
58
+ assert_equal '3372', Djatoka::Metadata.new(@resolver, @identifier).perform.height
59
+ Djatoka.use_curb=true
60
+ end
61
+ end
62
+
63
+ context 'determining all the levels for a particular metadata response' do
64
+ setup do
65
+ @metadata_obj = @resolver.metadata(@identifier)
66
+ @metadata = @metadata_obj.perform
67
+ @levels = @metadata.all_levels
68
+ end
69
+ should 'return height and width for all levels' do
70
+ levels = { "0"=>{"height"=>52, "width"=>80},
71
+ "1"=>{"height"=>105, "width"=>160},
72
+ "2"=>{"height"=>210, "width"=>320},
73
+ "3"=>{"height"=>421, "width"=>640},
74
+ "4"=>{"height"=>843, "width"=>1280},
75
+ "5"=>{"height"=>1686, "width"=>2560},
76
+ "6"=>{"height"=>3372, "width"=>5120},}
77
+ assert_equal levels, @levels
78
+ end
79
+ end # levels
80
+
81
+ end #with_a_resolver
82
+
83
+ end
84
+
@@ -0,0 +1,151 @@
1
+ require 'helper'
2
+
3
+ class TestDjatokaMetadata < Test::Unit::TestCase
4
+ with_a_resolver do
5
+ context 'creates image URLs for a region' do
6
+ setup do
7
+ @region = Djatoka::Region.new(@resolver, @identifier)
8
+ end
9
+
10
+ should 'create good region parameters' do
11
+ good_params = {'rft_id'=>"info:lanl-repo/ds/5aa182c2-c092-4596-af6e-e95d2e263de3",
12
+ "svc_val_fmt"=>"info:ofi/fmt:kev:mtx:jpeg2000",
13
+ "svc_id"=>"info:lanl-repo/svc/getRegion",
14
+ 'url_ver'=>"Z39.88-2004"}
15
+ assert_equal good_params, @region.region_params
16
+ end
17
+
18
+ context 'create a new region if given a string as a resolver' do
19
+ should 'create a resolver object' do
20
+ region = Djatoka::Region.new('http://african.lanl.gov/adore-djatoka/resolver', @identifier)
21
+ assert region.resolver.is_a? Djatoka::Resolver
22
+ assert_equal 'http://african.lanl.gov/adore-djatoka/resolver', region.resolver.to_s
23
+ assert_equal 'african.lanl.gov', region.resolver.host
24
+ end
25
+ end
26
+
27
+ context 'create a default region uri' do
28
+ setup do
29
+ @region_uri = @region.uri
30
+ @query_values = @region.uri.query_values
31
+ end
32
+ should 'create a default region uri' do
33
+ assert_equal @identifier, @query_values['rft_id']
34
+ assert_equal nil, @query_values['svc.scale']
35
+ end
36
+ should 'output a region url' do
37
+ assert @region.url.is_a? String
38
+ assert @region.url.include? 'http://african.lanl.gov'
39
+ end
40
+ end
41
+
42
+ context 'add query parameters' do
43
+ should 'accept a scale as a String' do
44
+ scale_region = @region.scale('96')
45
+ assert_equal '96', scale_region.query.scale
46
+ end
47
+ should 'accept a scale as a single Integer' do
48
+ assert_equal '96', @region.scale(96).query.scale
49
+ end
50
+ should 'accept a scale as a Float' do
51
+ assert_equal '0.5', @region.scale(0.5).query.scale
52
+ end
53
+ should 'accept a scale as an Array of 2' do
54
+ assert_equal '1024,768', @region.scale([1024,768]).query.scale
55
+ assert_equal '10,60', @region.scale(['10', '60']).query.scale
56
+ end
57
+
58
+ should 'accept a level as a String' do
59
+ level_region = @region.level('2')
60
+ assert_equal '2', level_region.query.level
61
+ end
62
+ should 'accept a level as an Integer' do
63
+ assert_equal '3', @region.level(3).query.level
64
+ end
65
+
66
+ should 'accept a rotate as a String' do
67
+ assert_equal '180', @region.rotate('180').query.rotate
68
+ end
69
+ should 'accept a rotate as an Integer' do
70
+ assert_equal '180', @region.rotate(180).query.rotate
71
+ end
72
+
73
+ should 'accept a region as a String' do
74
+ assert_equal '0,0,256,256', @region.region('0,0,256,256').query.region
75
+ end
76
+ should 'accept a region as an Array of Strings' do
77
+ assert_equal '0,0,256,256', @region.region(['0','0','256','256']).query.region
78
+ end
79
+ should 'accept a region as an Array of Integers and/or Floats' do
80
+ assert_equal '0.1,0.1,5,5', @region.region([0.1, 0.1, 5, 5]).query.region
81
+ end
82
+
83
+ should 'accept a format as a String' do
84
+ assert_equal 'image/png', @region.format('image/png').query.format
85
+ end
86
+ should 'accept a clayer as a String' do
87
+ assert_equal '0', @region.clayer('0').query.clayer
88
+ end
89
+ end
90
+
91
+ context 'add empty or null query parameters' do
92
+ should 'have no value in the uri' do
93
+ assert_equal nil, @region.level(nil).uri.query_values['svc.level']
94
+ end
95
+ end
96
+
97
+ context 'create a query uri with svc values' do
98
+ should 'have a svc.scale paramter' do
99
+ assert_equal '96', @region.scale('96').uri.query_values['svc.scale']
100
+ end
101
+ context 'and method chaining' do
102
+ setup do
103
+ @region2 = @region.dup.scale('96').level('3')
104
+ @region2_query_values = @region2.uri.query_values
105
+ end
106
+ should 'have svc.scale and svc.level parameters after method chaining' do
107
+ assert_equal '96', @region2_query_values['svc.scale']
108
+ assert_equal '3', @region2_query_values['svc.level']
109
+ end
110
+ should 'have default values after method chaining svc values' do
111
+ assert_equal 'info:lanl-repo/svc/getRegion', @region2_query_values['svc_id']
112
+ end
113
+ end
114
+ end #context create a query uri with svc values
115
+
116
+ context 'create a new region and pass in query parameters' do
117
+ should 'accept param keys as symbols' do
118
+ params = {:level=> 3, :rotate=>180, :region => '0,0,500,500',
119
+ :scale => 75, :format => 'image/png'
120
+ }
121
+ region = Djatoka::Region.new(@resolver,@identifier,params)
122
+ assert_equal '3', region.query.level
123
+ assert_equal '180', region.query.rotate
124
+ assert_equal '0,0,500,500', region.query.region
125
+ assert_equal '75', region.query.scale
126
+ assert_equal 'image/png', region.query.format
127
+ end
128
+ should 'accept param keys as strings' do
129
+ params = {'level'=> 3, 'rotate'=>180, 'region' => '0,0,500,500',
130
+ 'scale' => 75, 'format' => 'image/png'
131
+ }
132
+ region = Djatoka::Region.new(@resolver,@identifier,params)
133
+ assert_equal '3', region.query.level
134
+ assert_equal '180', region.query.rotate
135
+ assert_equal '0,0,500,500', region.query.region
136
+ assert_equal '75', region.query.scale
137
+ assert_equal 'image/png', region.query.format
138
+ end
139
+ should 'not choke on params it responds to but are not instance methods' do
140
+ region = Djatoka::Region.new(@resolver,@identifier,{:class => 'djatoka_image'})
141
+ assert region.is_a? Djatoka::Region
142
+ assert_equal nil, region.uri.query_values['svc.class']
143
+ end
144
+ end
145
+
146
+ end #context
147
+
148
+ end #with_a_resolver
149
+
150
+ end
151
+
@@ -0,0 +1,88 @@
1
+ require 'helper'
2
+
3
+ class TestDjatokaResolver < Test::Unit::TestCase
4
+ with_a_resolver do
5
+ context 'A Djatoka Resolver' do
6
+
7
+ should 'hold a good host from a base_url' do
8
+ assert_equal 'african.lanl.gov', @resolver.host
9
+ end
10
+
11
+ should 'hold a good path from a base_url' do
12
+ assert_equal '/adore-djatoka/resolver', @resolver.path
13
+ end
14
+
15
+ should 'create a ping url' do
16
+ assert_equal 'http://african.lanl.gov/adore-djatoka/resolver?url_ver=Z39.88-2004&svc_id=info:lanl-repo/svc/ping&rft_id=info%3Alanl-repo%2Fds%2F5aa182c2-c092-4596-af6e-e95d2e263de3',
17
+ @resolver.ping_url(@identifier)
18
+ end
19
+
20
+ context 'a ping request' do
21
+ setup do
22
+ @ping_response = @resolver.ping(@identifier)
23
+ end
24
+
25
+ should 'return an OK status for a good request' do
26
+ assert_equal 'OK', @ping_response['status']
27
+ end
28
+
29
+ should 'return the identifier for a good request' do
30
+ assert_equal @identifier, @ping_response['identifier']
31
+ end
32
+
33
+ should 'return a nil for a bad request' do
34
+ ping_response = @resolver.ping('asdf')
35
+ assert_equal nil, ping_response
36
+ end
37
+ end
38
+
39
+ context 'a ping request using net::http' do
40
+ setup do
41
+ Djatoka.use_curb=false
42
+ end
43
+ should 'return an OK status for a good request' do
44
+ assert_equal 'OK', @resolver.ping(@identifier).status
45
+ Djatoka.use_curb=true
46
+ end
47
+ should 'return a nil for a bad request' do
48
+ ping_response = @resolver.ping('asdf')
49
+ assert_equal nil, ping_response
50
+ Djatoka.use_curb=true
51
+ end
52
+ end
53
+
54
+ should 'create a region from a resolver' do
55
+ assert @resolver.region(@identifier).is_a? Djatoka::Region
56
+ end
57
+ should 'create a region uri from a resolver' do
58
+ assert @resolver.region_uri(@identifier).is_a? Addressable::URI
59
+ end
60
+
61
+ end #context a Djatoka::Resolver
62
+
63
+ context 'a resolver with a port number' do
64
+ setup do
65
+ @resolver_port = Djatoka::Resolver.new('http://example.com:8080/adore-djatoka/resolver')
66
+ end
67
+ should 'hold good uri data' do
68
+ assert_equal 'example.com', @resolver_port.host
69
+ assert_equal 8080, @resolver_port.port
70
+ assert_equal '/adore-djatoka/resolver', @resolver_port.path
71
+ end
72
+ should 'create a good metadata uri' do
73
+ metadata_url = Djatoka::Metadata.new(@resolver_port, 'asdf').uri
74
+ assert_equal 8080, metadata_url.port
75
+ end
76
+ should 'create a metadata url' do
77
+ metadata_url = @resolver_port.metadata_url(@identifier)
78
+ assert metadata_url.is_a? String
79
+ assert metadata_url.include?('getMetadata')
80
+ end
81
+ should 'create a good url' do
82
+ assert_equal 'http://example.com:8080/adore-djatoka/resolver', @resolver_port.url
83
+ end
84
+ end #context: resolver with a port number
85
+
86
+ end #with_a_resolver
87
+ end
88
+
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class TestDjatokaViewHelpers < Test::Unit::TestCase
4
+ with_a_resolver do
5
+ context 'Rails view helpers' do
6
+ should 'be true' do
7
+ assert true
8
+ end
9
+ should_eventually 'Test the Rails view helpers' do
10
+ assert_equal '', djatoka_image_tag(@identifier)
11
+ end
12
+ end
13
+ end
14
+ end
15
+
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: djatoka
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jason Ronallo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-07-15 00:00:00 -04:00
13
+ default_executable: djatoka_url
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ruby-debug
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: addressable
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.1.2
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: json
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: trollop
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: mash
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ description: The djatoka library provides some simple methods for creation of the OpenURLs needed to communicate with the Djatoka image server.
76
+ email: jronallo@gmail.com
77
+ executables:
78
+ - djatoka_url
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - LICENSE
83
+ - README.rdoc
84
+ files:
85
+ - LICENSE
86
+ - README.rdoc
87
+ - Rakefile
88
+ - VERSION
89
+ - bin/djatoka_url
90
+ - generators/djatoka/djatoka_generator.rb
91
+ - generators/djatoka/templates/OpenLayers.js
92
+ - generators/djatoka/templates/OpenURL.js
93
+ - generators/djatoka/templates/blank.gif
94
+ - generators/djatoka/templates/djatoka-initializer.rb
95
+ - generators/djatoka/templates/djatoka.js
96
+ - generators/djatoka/templates/east-mini.png
97
+ - generators/djatoka/templates/north-mini.png
98
+ - generators/djatoka/templates/south-mini.png
99
+ - generators/djatoka/templates/west-mini.png
100
+ - generators/djatoka/templates/zoom-minus-mini.png
101
+ - generators/djatoka/templates/zoom-plus-mini.png
102
+ - generators/djatoka/templates/zoom-world-mini.png
103
+ - lib/djatoka.rb
104
+ - lib/djatoka/common.rb
105
+ - lib/djatoka/metadata.rb
106
+ - lib/djatoka/net.rb
107
+ - lib/djatoka/region.rb
108
+ - lib/djatoka/resolver.rb
109
+ - lib/djatoka/view_helpers.rb
110
+ has_rdoc: true
111
+ homepage: http://github.com/jronallo/djatoka
112
+ licenses: []
113
+
114
+ post_install_message:
115
+ rdoc_options:
116
+ - --charset=UTF-8
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "0"
124
+ version:
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: "0"
130
+ version:
131
+ requirements: []
132
+
133
+ rubyforge_project:
134
+ rubygems_version: 1.3.5
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: Djatoka image server helpers for Ruby and Rails.
138
+ test_files:
139
+ - test/test_metadata.rb
140
+ - test/test_djatoka.rb
141
+ - test/test_resolver.rb
142
+ - test/test_view_helpers.rb
143
+ - test/test_region.rb
144
+ - test/helper.rb
145
+ - test/test_common.rb