2011-12-10 10:12:39 +00:00
require 'spec_helper'
describe Role do
before do
@role = Role . create ( :key = > 'teacher' ,
:i18n_variable = > { :key = > 'teacher' , :en = > 'Teacher' , :zh_tw = > 'Teacher in Chinese' , :document_class = > 'Role' } ,
:sub_roles = > [ { :key = > 'undergrad' ,
2011-12-18 02:07:42 +00:00
:i18n_variable = > { :key = > 'yeah' , :en = > 'Yeah' , :zh_tw = > 'Yeah' , :document_class = > 'Role' } ,
2011-12-10 10:12:39 +00:00
:attribute_fields = > [ { :key = > 'department' } ,
{ :key = > 'room' } ] } ,
{ :key = > 'master' ,
:attribute_fields = > [ { :key = > 'department' } ] } ] )
end
describe 'New role' do
describe '#Role' do
it 'should have :built_in false' do
@role . built_in . should be false
end
it 'should have :disabled false' do
@role . disabled . should be false
end
it 'should have a i18n_variable' do
@role . i18n_variable . should be_an_instance_of I18nVariable
end
it 'should create sub_roles' do
@role . should have ( 2 ) . sub_roles
end
it 'should create attribute_fields' do
@role . sub_roles [ 1 ] . should have ( 1 ) . attribute_fields
end
end
describe '#SubRole' do
it 'should have :built_in false' do
@role . sub_roles [ 0 ] . built_in . should be false
end
it 'should have :disabled false' do
@role . sub_roles [ 0 ] . disabled . should be false
end
2011-12-18 02:07:42 +00:00
it 'should have a i18n_variable' do
@role . sub_roles [ 0 ] . i18n_variable . should be_an_instance_of I18nVariable
end
2011-12-10 10:12:39 +00:00
end
describe '#AttributeField' do
it 'should have :built_in false' do
@role . sub_roles [ 0 ] . attribute_fields [ 0 ] . built_in . should be false
end
it 'should have :disabled false' do
@role . sub_roles [ 0 ] . attribute_fields [ 0 ] . disabled . should be false
end
end
end
describe 'Edit role' do
describe '#Role' do
before do
@role . update_attributes ( { :key = > 'student' , :i18n_variable = > { :en = > 'Student' } ,
:sub_roles = > [ { :key = > 'new' ,
:attribute_fields = > [ { :key = > 'bob' } ,
{ :key = > 'great' } ] } ,
{ :id = > @role . sub_roles [ 0 ] . id } ,
{ :id = > @role . sub_roles [ 1 ] . id } ] } )
end
it 'should not be the old :key' do
@role . key . should_not == 'teacher'
end
it 'should be the new :key' do
@role . key . should == 'student'
end
it 'should not be the old :i18n_variable[:en]' do
@role . i18n_variable [ :en ] . should_not == 'Teacher'
end
it 'should be the new :i18n_variable[:en]' do
@role . i18n_variable [ :en ] . should == 'Student'
end
it 'should have one more SubRole' do
@role . should have ( 3 ) . sub_roles
end
end
end
describe 'Destroy' do
describe '#AttributeField' do
before do
@role . update_attributes ( :key = > 'teacher' ,
:i18n_variable = > { :key = > 'teacher' , :en = > 'Teacher' , :zh_tw = > 'Teacher in Chinese' , :document_class = > 'Role' } ,
:sub_roles_attributes = > { '0' = > { :id = > @role . sub_roles [ 0 ] . id ,
:key = > 'undergrad' ,
:attribute_fields_attributes = > { '0' = > { :id = > @role . sub_roles [ 0 ] . attribute_fields [ 0 ] . id ,
:key = > 'department' } ,
'1' = > { :id = > @role . sub_roles [ 0 ] . attribute_fields [ 1 ] . id ,
:key = > 'room' , :_destroy = > true } } } } )
end
it 'should have only one AttributeField for the first SubRole' do
@role . sub_roles [ 0 ] . should have ( 1 ) . attribute_fields
end
end
describe '#I18nVariable' do
before do
@role . update_attributes ( :key = > 'teacher' ,
:i18n_variable_attributes = > { :id = > @role . i18n_variable . id , :key = > 'teacher' , :en = > 'Teacher' , :zh_tw = > 'Teacher in Chinese' , :document_class = > 'Role' , :_destroy = > true } )
end
it 'should not have a I18nVariable' do
@role . i18n_variable . should_not be_an_instance_of I18nVariable
end
end
describe '#Role' do
it 'should destroy the I18nVariable' do
id = @role . i18n_variable . id
@role . destroy
lambda { I18nVariable . find ( id ) } . should raise_error
end
end
end
end