require_relative 'spec_helper' require 'minitest/spec' require 'qasim/map' require 'securerandom' class Qasim::Map::Fake < Qasim::Map::Generic def self.handles [:fake] end end describe Qasim::Map do describe 'env_substitute' do# {{{ it "returns a normal string unchanged" do str = "5cb0c49325df2d526116ef7b49eb7329" assert_equal Qasim::Map.env_substitute(str), str end it "replaces a ${variable} with its value from environment" do str = "SOMETHING = ${HOME}" ref = "SOMETHING = #{ENV['HOME']}" assert_equal ref, Qasim::Map.env_substitute(str) end it "replaces a $variable with its value from environment" do str = "SOMETHING = $HOME" ref = "SOMETHING = #{ENV['HOME']}" assert_equal ref, Qasim::Map.env_substitute(str) end it "does not replace original string" do str = "SOMETHING = $HOME" res = "SOMETHING = $HOME" Qasim::Map.env_substitute(str) assert_equal res, str end it "works recursively" do ENV['QASIM_MAP_TEST1']='QASIM_MAP_TEST2' ENV['QASIM_MAP_TEST2']='OK' str = "SOMETHING = ${$QASIM_MAP_TEST1}" ref = "SOMETHING = OK" assert_equal ref, Qasim::Map.env_substitute(str) end end# }}} describe 'class_for' do it 'must return a class for given type' do expected = Qasim::Map::Fake result = Qasim::Map.class_for 'fake' assert_equal expected, result end it 'must return nil when no type found' do random_string = SecureRandom.hex expected = nil result = Qasim::Map.class_for random_string assert_equal expected, result end end describe 'from_file' do end end