summaryrefslogtreecommitdiff
path: root/spec/unit/util/instrumentation/data_spec.rb
blob: 418d897241f97b551f57ce6f3006affb8c5badc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /usr/bin/env ruby

require 'spec_helper'
require 'matchers/json'
require 'puppet/util/instrumentation'
require 'puppet/util/instrumentation/data'

describe Puppet::Util::Instrumentation::Data do
  include JSONMatchers

  Puppet::Util::Instrumentation::Data

  before(:each) do
    @listener = stub 'listener', :name => "name"
    Puppet::Util::Instrumentation.stubs(:[]).with("name").returns(@listener)
  end

  it "should indirect instrumentation_data" do
    Puppet::Util::Instrumentation::Data.indirection.name.should == :instrumentation_data
  end

  it "should lookup the corresponding listener" do
    Puppet::Util::Instrumentation.expects(:[]).with("name").returns(@listener)
    Puppet::Util::Instrumentation::Data.new("name")
  end

  it "should error if the listener can not be found" do
    Puppet::Util::Instrumentation.expects(:[]).with("name").returns(nil)
    expect { Puppet::Util::Instrumentation::Data.new("name") }.to raise_error
  end

  it "should return pson data" do
    data = Puppet::Util::Instrumentation::Data.new("name")
    @listener.stubs(:data).returns({ :this_is_data  => "here also" })
    data.should set_json_attribute('name').to("name")
    data.should set_json_attribute('this_is_data').to("here also")
  end

  it "should not error if the underlying listener doesn't have data" do
    lambda { Puppet::Util::Instrumentation::Data.new("name").to_pson }.should_not raise_error
  end

  it "should return a hash containing data when unserializing from pson" do
    Puppet::Util::Instrumentation::Data.from_data_hash({:name => "name"}).should == {:name => "name"}
  end
end