Sha256: 9bff0f586da97a3ee6bf2f4ebc614e6a63e7b2ac87cc541d4c3f34a94a3f9c06

Contents?: true

Size: 1.35 KB

Versions: 5

Compression:

Stored size: 1.35 KB

Contents

require 'test_helper'

class TraitsTest < ActiveSupport::TestCase
  include SetBuilder::Modifiers


  test "traits" do
    expected_traits = %w{age attended awesome born died name}
    assert_equal expected_traits, Friend.traits.collect(&:name).sort
  end
  
  test "traits' accessor" do
    traits = Friend.traits
    assert_kind_of SetBuilder::Traits, traits
    assert_equal "awesome", traits[0].name, "Array getter should still work like normal"
    assert_kind_of SetBuilder::Trait, traits[:born], "If you pass a string or symbol Traits should lookup a trait by name"
  end
  
  test "trait method is protected" do
    assert_raises NoMethodError, "this method is for use within class definition" do
      Friend.trait
    end
  end
  
  test "collection of modifiers" do
    expected_modifiers = %w{DateModifier NumberModifier StringModifier}.collect {|name| "SetBuilder::Modifiers::#{name}"}
    assert_equal expected_modifiers, Friend.traits.modifiers.collect(&:name).sort
  end
  
  test "to_json" do
    expected_json = [['awesome', 'reflexive'],
                     ['died', 'active'],
                     ['born', 'passive', ['date']],
                     ['age', 'noun', ['number']],
                     [['attended', 'school'], 'perfect'],
                     ['name', 'noun', ['string']]].to_json
    assert_equal expected_json, Friend.traits.to_json
  end


end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
set_builder-1.2.0.beta3 test/traits_test.rb
set_builder-1.2.0.beta2 test/traits_test.rb
set_builder-1.2.0.beta1 test/traits_test.rb
set_builder-1.1.0 test/traits_test.rb
set_builder-1.0.2 test/traits_test.rb