require "../spec_helper"

describe Spectator::DSL::ExampleFactory do
  describe "#build" do
    it "creates an example of the correct type" do
      factory = Spectator::DSL::ExampleFactory.new(SpyExample)
      group = Spectator::RootExampleGroup.new(Spectator::ExampleHooks.empty)
      example = factory.build(group, Spectator::Internals::SampleValues.empty)
      example.should be_a(SpyExample)
    end

    it "passes along the group" do
      factory = Spectator::DSL::ExampleFactory.new(SpyExample)
      group = Spectator::RootExampleGroup.new(Spectator::ExampleHooks.empty)
      example = factory.build(group, Spectator::Internals::SampleValues.empty)
      example.group.should eq(group)
    end

    it "passes along the sample values" do
      factory = Spectator::DSL::ExampleFactory.new(SpyExample)
      group = Spectator::RootExampleGroup.new(Spectator::ExampleHooks.empty)
      values = Spectator::Internals::SampleValues.empty.add(:foo, "foo", 12345)
      example = factory.build(group, values)
      example.as(SpyExample).sample_values.should eq(values)
    end
  end
end