upgrade to concat 2.0.0
[mirror/dsa-puppet.git] / 3rdparty / modules / concat / spec / acceptance / order_spec.rb
diff --git a/3rdparty/modules/concat/spec/acceptance/order_spec.rb b/3rdparty/modules/concat/spec/acceptance/order_spec.rb
new file mode 100644 (file)
index 0000000..b746b1c
--- /dev/null
@@ -0,0 +1,123 @@
+require 'spec_helper_acceptance'
+
+describe 'concat order' do
+  basedir = default.tmpdir('concat')
+
+  context '=> ' do
+    shared_examples 'sortby' do |order_by, match_output|
+      pp = <<-EOS
+      concat { '#{basedir}/foo':
+        order => '#{order_by}'
+      }
+      concat::fragment { '1':
+        target  => '#{basedir}/foo',
+        content => 'string1',
+        order   => '1',
+      }
+      concat::fragment { '2':
+        target  => '#{basedir}/foo',
+        content => 'string2',
+        order   => '2',
+      }
+      concat::fragment { '10':
+        target  => '#{basedir}/foo',
+        content => 'string10',
+      }
+      EOS
+
+      it 'applies the manifest twice with no stderr' do
+        apply_manifest(pp, :catch_failures => true)
+        apply_manifest(pp, :catch_changes => true)
+      end
+
+      describe file("#{basedir}/foo") do
+        it { should be_file }
+        its(:content) { should match match_output }
+      end
+    end
+
+    describe 'alpha' do
+      it_behaves_like 'sortby', 'alpha', /string1string10string2/
+    end
+
+    describe 'numeric' do
+      it_behaves_like 'sortby', 'numeric', /string1string2string10/
+    end
+  end
+end # concat order
+
+describe 'concat::fragment order' do
+  basedir = default.tmpdir('concat')
+
+  context '=> reverse order' do
+    shared_examples 'order_by' do |order_by, match_output|
+      pp = <<-EOS
+      concat { '#{basedir}/foo':
+          order => '#{order_by}'
+      }
+      concat::fragment { '1':
+        target  => '#{basedir}/foo',
+        content => 'string1',
+        order   => '15',
+      }
+      concat::fragment { '2':
+        target  => '#{basedir}/foo',
+        content => 'string2',
+        # default order 10
+      }
+      concat::fragment { '3':
+        target  => '#{basedir}/foo',
+        content => 'string3',
+        order   => '1',
+      }
+      EOS
+
+      it 'applies the manifest twice with no stderr' do
+        apply_manifest(pp, :catch_failures => true)
+        apply_manifest(pp, :catch_changes => true)
+      end
+
+      describe file("#{basedir}/foo") do
+        it { should be_file }
+        its(:content) { should match match_output }
+      end
+    end
+    describe 'alpha' do
+      it_should_behave_like 'order_by', 'alpha', /string3string2string1/
+    end
+    describe 'numeric' do
+      it_should_behave_like 'order_by', 'numeric', /string3string2string1/
+    end
+  end
+
+  context '=> normal order' do
+    pp = <<-EOS
+      concat { '#{basedir}/foo': }
+      concat::fragment { '1':
+        target  => '#{basedir}/foo',
+        content => 'string1',
+        order   => '01',
+      }
+      concat::fragment { '2':
+        target  => '#{basedir}/foo',
+        content => 'string2',
+        order   => '02'
+      }
+      concat::fragment { '3':
+        target  => '#{basedir}/foo',
+        content => 'string3',
+        order   => '03',
+      }
+    EOS
+
+    it 'applies the manifest twice with no stderr' do
+      apply_manifest(pp, :catch_failures => true)
+      apply_manifest(pp, :catch_changes => true)
+    end
+
+    describe file("#{basedir}/foo") do
+      it { should be_file }
+      its(:content) { should match /string1string2string3/ }
+    end
+  end
+end # concat::fragment order