Sha256: df3eaf695152359e050b6392b886e17b2307266bb28a72006372245b5f48eb3f

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

require 'test_helper'
require 'sfkb/rest'

describe SFKB::REST do
  include SFKB::REST
  let(:options) { { api_version: 'X' } }
  let(:response) { |x| OpenStruct.new(body: x) }

  describe 'url' do
    it 'joins paths to params amd substitutes vars' do
      assert_equal '/foo', url('/foo')
      assert_equal '/foo?x=1', url('/foo', x: 1)
      assert_equal '/foo?x=1&y=2', url('/foo', x: 1, y: 2)
    end

    it 'substitutes vars' do
      assert_equal '/foo/1/2', url('/foo/<x>/<y>', x: 1, y: 2)
      assert_equal '/foo/1?y=2', url('/foo/<x>', x: 1, y: 2)
      assert_equal '/a/1?b=2&b=3&c=4', url('/a/<a>', a: 1, b: %w(2 3), c: 4)
      assert_raises { url('/x/<blah>') }
    end
  end

  describe 'index' do
    let(:services) { { 'a' => '/services/data/vX/a', 'b' => { foo: 123 } } }
    let(:responses) do
      {
        '/services/data/vX'   => services,
        '/services/data/vX/a' => { 'b' => '/services/data/vX/b' },
        '/services/data/vX/b' => { 'c' => '/services/data/vX/c' },
        '/services/data/vX/c' => OpenStruct.new('d' => 'You got me.')
      }
    end
    define_method(:lookup) { |url| responses.fetch(url) }
    define_method(:get) { |url| OpenStruct.new(body: lookup(url)) }
    it 'gets an endpoint' do
      assert_equal services, index
      assert_respond_to index, :a
      assert_respond_to index.a, :b
      assert_respond_to index.a.b, :c
      assert_respond_to index.a.b.c, :d
      assert_equal 'You got me.', index.a.b.c.d
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sfkb-0.1.3 test/sfkb/rest_test.rb