diff modules/stdlib/spec/functions/upcase_spec.rb @ 272:c42fb28cff86

Update to a newer Python module This also pulls in an EPEL module (which we don't use) and a newer stdlib version.
author IBBoard <dev@ibboard.co.uk>
date Fri, 03 Jan 2020 19:56:04 +0000
parents addb0ea390a1
children d9352a684e62
line wrap: on
line diff
--- a/modules/stdlib/spec/functions/upcase_spec.rb	Tue Dec 31 13:49:38 2019 +0000
+++ b/modules/stdlib/spec/functions/upcase_spec.rb	Fri Jan 03 19:56:04 2020 +0000
@@ -1,33 +1,26 @@
-#! /usr/bin/env ruby -S rspec
 require 'spec_helper'
 
-describe "the upcase function" do
-  let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
-
-  it "should exist" do
-    expect(Puppet::Parser::Functions.function("upcase")).to eq("function_upcase")
-  end
-
-  it "should raise a ParseError if there is less than 1 arguments" do
-    expect { scope.function_upcase([]) }.to( raise_error(Puppet::ParseError))
+describe 'upcase' do
+  describe 'signature validation' do
+    it { is_expected.not_to eq(nil) }
+    it { is_expected.to run.with_params.and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i) }
+    it { is_expected.to run.with_params('', '').and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i) }
+    it { is_expected.to run.with_params(1).and_raise_error(Puppet::ParseError, %r{Requires an array, hash or object that responds to upcase}) }
+    it { is_expected.to run.with_params([1]).and_raise_error(Puppet::ParseError, %r{Requires an array, hash or object that responds to upcase}) }
   end
 
-  it "should upcase a string" do
-    result = scope.function_upcase(["abc"])
-    expect(result).to(eq('ABC'))
-  end
-
-  it "should do nothing if a string is already upcase" do
-    result = scope.function_upcase(["ABC"])
-    expect(result).to(eq('ABC'))
+  describe 'normal string handling' do
+    it { is_expected.to run.with_params('abc').and_return('ABC') }
+    it { is_expected.to run.with_params('Abc').and_return('ABC') }
+    it { is_expected.to run.with_params('ABC').and_return('ABC') }
   end
 
-  it "should accept objects which extend String" do
-    class AlsoString < String
-    end
+  describe 'handling classes derived from String' do
+    it { is_expected.to run.with_params(AlsoString.new('ABC')).and_return('ABC') }
+  end
 
-    value = AlsoString.new('abc')
-    result = scope.function_upcase([value])
-    result.should(eq('ABC'))
+  describe 'strings in arrays handling' do
+    it { is_expected.to run.with_params([]).and_return([]) }
+    it { is_expected.to run.with_params(%w[One twO]).and_return(%w[ONE TWO]) }
   end
 end