require 'test_helper' class Aviator::Test describe 'aviator/core/request' do describe '::new' do it 'raises an error when a required param is not provided' do klass = Class.new(Aviator::Request) do required_param :someparamname end initializer = lambda { klass.new } initializer.must_raise ArgumentError error = initializer.call rescue $! error.message.wont_be_nil error.message.must_include "someparamname" end it 'does not raise any error when the required param is provided' do klass = Class.new(Aviator::Request) do required_param :someparamname end # obj = klass.new({ someparamname: 'someparamvalue' }) obj = klass.new do |params| params.someparamname = 'something' end end end describe '::anonymous?' do it 'is false by default' do klass = Class.new(Aviator::Request) klass.anonymous?.must_equal false end it 'returns true if specified as such' do klass = Class.new(Aviator::Request) do anonymous end klass.anonymous?.must_equal true end end describe '#anonymous?' do it 'is false by default' do klass = Class.new(Aviator::Request) klass.new.anonymous?.must_equal false end it 'returns true if specified as such' do klass = Class.new(Aviator::Request) do anonymous end klass.new.anonymous?.must_equal true end end describe '::api_version' do it 'returns the api version' do klass = Class.new(Aviator::Request) do api_version :v2 end klass.api_version.must_equal :v2 end end describe '#api_version' do it 'returns the api version' do klass = Class.new(Aviator::Request) do api_version :v2 end klass.new.api_version.must_equal :v2 end end describe '::body?' do it 'returns false if the body method is not defined' do klass = Class.new(Aviator::Request) klass.body?.must_equal false end it 'returns true if the body method is defined' do klass = Class.new(Aviator::Request) do def body; end end klass.body?.must_equal true end end describe '#body?' do it 'returns false if the body method is not defined' do klass = Class.new(Aviator::Request) klass.new.body?.must_equal false end it 'returns true if the body method is defined' do klass = Class.new(Aviator::Request) do def body; end end klass.new.body?.must_equal true end end describe '::endpoint_type' do it 'returns the endpoint type' do klass = Class.new(Aviator::Request) do endpoint_type :public end klass.endpoint_type.must_equal :public end end describe '#endpoint_type' do it 'returns the endpoint type' do klass = Class.new(Aviator::Request) do endpoint_type :public end klass.new.endpoint_type.must_equal :public end end describe '::http_method' do it 'returns the http method if it is defined' do klass = Class.new(Aviator::Request) do http_method :post end klass.http_method.must_equal :post end end describe '#http_method' do it 'returns the http method if it is defined' do klass = Class.new(Aviator::Request) do http_method :post end klass.new.http_method.must_equal :post end end describe '::link_to' do it 'adds a link to Request::links' do rel = 'documentation' href = 'http://x.y.z' klass = Class.new(Aviator::Request) do link_to rel, href end expected = [ { rel: rel, href: href } ] klass.links.must_equal expected klass.new.links.must_equal expected end end describe '::optional_param' do it 'is a private class method' do private_method = lambda { Aviator::Request.optional_param } private_method.must_raise NoMethodError error = private_method.call rescue $! error.message.wont_be_nil error.message.must_include "private method" end end describe '::optional_params' do it 'returns an array' do klass = Class.new(Aviator::Request) do optional_param :whatever end klass.optional_params.must_equal [:whatever] end end describe '#optional_params' do it 'returns an array' do klass = Class.new(Aviator::Request) do optional_param :whatever end klass.new.optional_params.must_equal [:whatever] end end describe '::required_param' do it 'is a private class method' do private_method = lambda { Aviator::Request.required_param } private_method.must_raise NoMethodError error = private_method.call rescue $! error.message.wont_be_nil error.message.must_include "private method" end end describe '::required_params' do it 'returns an array' do klass = Class.new(Aviator::Request) do required_param :whatever end klass.required_params.must_equal [:whatever] end end describe '#required_params' do it 'returns an array' do klass = Class.new(Aviator::Request) do required_param :whatever end klass.required_params.must_equal [:whatever] end end describe '::url?' do it 'returns false if the path method is not defined' do klass = Class.new(Aviator::Request) klass.url?.must_equal false end it 'returns true if the path method is defined' do klass = Class.new(Aviator::Request) do def url; end end klass.url?.must_equal true end end describe '#path?' do it 'returns false if the path method is not defined' do klass = Class.new(Aviator::Request) klass.new.url?.must_equal false end it 'returns true if the path method is defined' do klass = Class.new(Aviator::Request) do def url; end end klass.new.url?.must_equal true end end end end