Sha256: eb654d1c480637d10bdf370c6f360011999f20734ae2e526c94fa91303291dc8
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
require 'test_helper' require "uber/builder" class BuilderTest < MiniTest::Spec Evergreen = Struct.new(:title) Hit = Struct.new(:title) class Song include Uber::Builder builds do |options| if options[:evergreen] Evergreen elsif options[:hit] Hit end end def self.build(options) class_builder.call(options).new end end # building class if no block matches it { Song.build({}).must_be_instance_of Song } it { Song.build({evergreen: true}).must_be_instance_of Evergreen } it { Song.build({hit: true}).must_be_instance_of Hit } # test chained builds. class Track include Uber::Builder builds do |options| Evergreen if options[:evergreen] end builds do |options| Hit if options[:hit] end def self.build(options) class_builder.call(options).new end end it { Track.build({}).must_be_instance_of Track } it { Track.build({evergreen: true}).must_be_instance_of Evergreen } it { Track.build({hit: true}).must_be_instance_of Hit } # test inheritance. builder do not inherit. class Play < Song end it { Play.build({}).must_be_instance_of Play } it { Play.build({evergreen: true}).must_be_instance_of Play } it { Play.build({hit: true}).must_be_instance_of Play } # test return from builds class Boomerang include Uber::Builder builds ->(options) do return Song if options[:hit] end def self.build(options) class_builder.call(options).new end end it { Boomerang.build({}).must_be_instance_of Boomerang } it { Boomerang.build({hit: true}).must_be_instance_of Song } end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
uber-0.0.14 | test/builder_test.rb |
uber-0.0.13 | test/builder_test.rb |