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