Sha256: 3e5e8beaf84b9959fc1954ae2cfee9a72b775ae35a8e6f623e9b85cf7f5aec93

Contents?: true

Size: 1.93 KB

Versions: 5

Compression:

Stored size: 1.93 KB

Contents

require "test/test_helper"

class PlaygroundTest < MiniTest::Spec
  before do
    @namespace = "vanity:0"
  end

  it "has one global instance" do
    assert instance = Vanity.playground
    assert_equal instance, Vanity.playground
  end

  it "use vanity-{major} as default namespace" do
    assert @namespace, Vanity.playground.namespace
  end

  it "fails if it cannot load named experiment from file" do
    assert_raises MissingSourceFile do
      experiment("Green button")
    end
  end

  it "loads named experiment from experiments directory" do
    Vanity.playground.expects(:require).with("experiments/green_button")
    begin
      experiment("Green button")
    rescue LoadError=>ex
    end
  end

  it "complains if experiment not defined in expected filed" do
    Vanity.playground.expects(:require).with("experiments/green_button")
    assert_raises LoadError do
      experiment("Green button")
    end
  end

  it "returns experiment defined in file" do
    playground = class << Vanity.playground ; self ; end
    playground.send :define_method, :require do |file|
      Vanity.playground.define "Green Button" do
        def xmts ; "x" ; end
      end
    end
    assert_equal "x", experiment("Green button").xmts
  end

  it "can define and access experiment using symbol" do
    assert green = experiment("Green Button") { }
    assert_equal green, experiment(:green_button)
    assert red = experiment(:red_button) { }
    assert_equal red, experiment("Red Button")
  end

  it "detect and fail when defining the same experiment twice" do
    experiment("Green Button") { }
    assert_raises RuntimeError do
      experiment(:green_button) { }
    end
  end

  it "uses playground namespace in experiment" do
    experiment(:green_button) { }
    assert_equal "#{@namespace}:green_button", experiment(:green_button).send(:key)
    assert_equal "#{@namespace}:green_button:participants", experiment(:green_button).send(:key, "participants")
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vanity-0.3.1 test/playground_test.rb
vanity-0.3.0 test/playground_test.rb
vanity-0.2.2 test/playground_test.rb
vanity-0.2.1 test/playground_test.rb
vanity-0.2.0 test/playground_test.rb