Add Service::request_classes

This commit is contained in:
Mark Maglana
2013-09-03 00:32:30 -07:00
parent 96e785f859
commit 780acb7f13
2 changed files with 33 additions and 2 deletions

View File

@@ -85,8 +85,8 @@ module Aviator
end
def requests
@requests
def request_classes
@request_classes
end
@@ -168,6 +168,14 @@ module Aviator
)
request_file_paths.each{ |path| require path }
constant_parts = request_file_paths
.map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) }
.map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
@request_classes = constant_parts.map do |cp|
"Aviator::#{provider.camelize}::#{service.camelize}::#{cp}".constantize
end
end

View File

@@ -127,6 +127,29 @@ class Aviator::Test
end
end
describe '#request_classes' do
it 'returns an array of the request classes' do
provider_name = config[:provider]
service_name = config[:auth_service][:name]
service_path = Pathname.new(__FILE__).join(
'..', '..', '..', '..', 'lib', 'aviator', provider_name, service_name
).expand_path
request_files = Pathname.glob(service_path.join('**', '*.rb'))
.map{|rf| rf.to_s.match(/#{provider_name}\/#{service_name}\/([\w\/]+)\.rb$/) }
.map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
classes = request_files.map do |rf|
"Aviator::#{provider_name.camelize}::#{service_name.camelize}::#{rf}".constantize
end
service.request_classes.must_equal classes
end
end
describe '#default_session_data=' do