| 
									
										
										
										
											2012-11-03 21:56:29 +00:00
										 |  |  |   # require 'spec_helper' | 
					
						
							| 
									
										
										
										
											2011-12-23 10:34:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-03 21:56:29 +00:00
										 |  |  | # 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',  | 
					
						
							|  |  |  | #                                         :i18n_variable => {:key => 'yeah', :en => 'Yeah', :zh_tw => 'Yeah', :document_class => 'Role'}, | 
					
						
							|  |  |  | #                                         :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 | 
					
						
							|  |  |  | #       it 'should have a i18n_variable' do | 
					
						
							|  |  |  | #         @role.sub_roles[0].i18n_variable.should be_an_instance_of I18nVariable | 
					
						
							|  |  |  | #       end | 
					
						
							|  |  |  | #     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 | 
					
						
							| 
									
										
										
										
											2011-12-23 10:34:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-11-03 21:56:29 +00:00
										 |  |  | # end |