Sha256: 7e29b9b673865c133c24ea7121c270e071648a47cf195bc3fc07f14deef5aeed

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

# TODO: move to vault-test-tools
require 'fileutils'

module Vault::Test
  module SpecHelpers
    extend self

    def usage_json
      vault_spec('usage.json')
    end

    def statement_json
      vault_spec('statement.json')
    end

    # memoizes return value so we don't keep making a request
    def vault_spec(filename)
      var_name = "@#{filename.gsub(".",'_')}".to_sym
      spec_value = instance_variable_get(var_name)
      return spec_value if spec_value
      instance_variable_set(var_name, read_spec(filename))
    end

    protected
    def url(name)
      "http://vault-specs.herokuapp.com/#{name}"
    end

    def file(name)
      "./test/support/#{name}"
    end

    # Uses JSON at URL when it can, but will use
    # the cached statement when it can't
    def read_spec(name)
      data = Net::HTTP.get(URI.parse(url(name)))
      FileUtils.mkdir_p(File.dirname(file(name)))
      File.open(file(name), 'w') { |f| f << data }
      data
    rescue => e
      $stderr.puts "Using cached #{name}"
      File.read(file(name))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vault-test-tools-0.3.1 lib/vault-test-tools/spec_helpers.rb