Project

General

Profile

Download (2.08 KB) Statistics
| Branch: | Tag: | Revision:
require 'test_helper'

class TestFacet < HostFacets::Base
end

module TestModule
class ModuleTestFacet < HostFacets::Base
end
end

class FacetTest < ActiveSupport::TestCase
setup do
@config = {}
Facets.stubs(:configuration).returns(@config)
end

teardown do
Host::Managed.cloned_parameters[:include].delete(:test_model)
Host::Managed.cloned_parameters[:include].delete(:test_facet)
Host::Managed.cloned_parameters[:include].delete(:namespaced_facet)
end

context 'namespaced facets' do
setup do
Facets.register TestModule::ModuleTestFacet, :namespaced_facet

@host = Host::Managed.new
@facet = @host.build_namespaced_facet
end

test 'can create a namespaced facet' do
assert_equal @facet, @host.facets.first
end

test 'returns facets attributes' do
attributes = @host.attributes

assert_not_nil attributes["namespaced_facet_attributes"]
end
end

context 'managed host behavior' do
setup do
Facets.register TestFacet

@host = Host::Managed.new
@facet = @host.build_test_facet
end

test 'registered facets are subscribed properly' do
assert_equal @facet, @host.facets.first
end

test 'facets are cloned to the new host' do
facet_clone = @facet.dup
@facet.stubs(:dup).returns(facet_clone)

cloned_host = @host.clone

assert_equal facet_clone, cloned_host.test_facet
assert_equal facet_clone, cloned_host.facets.first
end

test 'facets are included in attributes' do
attributes = @host.attributes

assert_not_nil attributes["test_facet_attributes"]
end

test 'facets are updated without specifying id explicitly' do
saved_host = FactoryGirl.create(:host)
saved_host.build_test_facet
saved_host.save!
TestFacet.class_eval do
def my_attribute
end

def my_attribute=(val)
end

attr_accessible :my_attribute
end

saved_host.attributes = {'test_facet_attributes' => { 'my_attribute' => 'my_value'}}

assert_not_nil saved_host.test_facet.id
end
end
end
(26-26/106)