2014-07-18 12:19:47 -04:00
var SomeViewClass = Ember . View . extend ( ) ,
containerView ;
2013-10-16 11:47:51 -04:00
2014-07-18 12:19:47 -04:00
function containerHasOnlyOneChild ( klass ) {
equal ( containerView . get ( 'childViews' ) . length , 1 , "container has no other children than the one created by method" ) ;
ok ( containerView . objectAt ( 0 ) instanceof klass , "container's child created by method is an instance of a correct class" ) ;
}
2013-10-16 11:47:51 -04:00
2014-07-18 12:19:47 -04:00
function containerHasTwoChildren ( klass1 , klass2 ) {
equal ( containerView . get ( 'childViews' ) . length , 2 , "container has both already existing and newly created children" ) ;
ok ( containerView . objectAt ( 0 ) instanceof klass1 , "already existing child's class is correct" ) ;
ok ( containerView . objectAt ( 1 ) instanceof klass2 , "newly created child's class is correct" ) ;
}
2013-10-16 11:47:51 -04:00
var childHasProperty = function ( name ) {
2014-07-18 12:19:47 -04:00
equal ( containerView . objectAt ( 0 ) . get ( name ) , name , "method passes properties to the container's child it creates" ) ;
2013-10-16 11:47:51 -04:00
} ;
2014-07-18 12:19:47 -04:00
module ( "view:container" , {
2013-10-16 11:47:51 -04:00
setup : function ( ) {
2014-07-18 12:19:47 -04:00
containerView = Discourse . _ _container _ _ . lookup ( 'view:container' ) ;
2013-10-16 11:47:51 -04:00
}
} ) ;
test ( "mixes in Discourse.Presence" , function ( ) {
2014-07-18 12:19:47 -04:00
ok ( Discourse . Presence . detect ( containerView ) ) ;
2013-10-16 11:47:51 -04:00
} ) ;
test ( "attachViewWithArgs: creates a view of a given class with given properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewWithArgs ( { foo : "foo" } , SomeViewClass ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( SomeViewClass ) ;
childHasProperty ( "foo" ) ;
} ) ;
test ( "attachViewWithArgs: creates a view of a given class without any properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewWithArgs ( null , SomeViewClass ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( SomeViewClass ) ;
} ) ;
test ( "attachViewWithArgs: creates a view without class specified (Ember.View is used by default) with given properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewWithArgs ( { foo : "foo" } ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( Ember . View ) ;
childHasProperty ( "foo" ) ;
} ) ;
test ( "attachViewWithArgs: creates a view without class specified (Ember.View is used by default) without any properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewWithArgs ( ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( Ember . View ) ;
} ) ;
test ( "attachViewWithArgs: appends a view to a container already containing other views" , function ( ) {
var AlreadyContainedViewClass = Ember . View . extend ( ) ;
var alreadyContainedView = AlreadyContainedViewClass . create ( ) ;
2014-07-18 12:19:47 -04:00
containerView . pushObject ( alreadyContainedView ) ;
2013-10-16 11:47:51 -04:00
2014-07-18 12:19:47 -04:00
containerView . attachViewWithArgs ( null , SomeViewClass ) ;
2013-10-16 11:47:51 -04:00
containerHasTwoChildren ( AlreadyContainedViewClass , SomeViewClass ) ;
} ) ;
test ( "attachViewClass: creates a view of a given class without any properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewClass ( SomeViewClass ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( SomeViewClass ) ;
} ) ;
test ( "attachViewClass: creates a view without class specified (Ember.View is used by default) without any properties and appends it to the container" , function ( ) {
2014-07-18 12:19:47 -04:00
containerView . attachViewClass ( ) ;
2013-10-16 11:47:51 -04:00
containerHasOnlyOneChild ( Ember . View ) ;
} ) ;
test ( "attachViewClass: appends a view to a container already containing other views" , function ( ) {
var AlreadyContainedViewClass = Ember . View . extend ( ) ;
var alreadyContainedView = AlreadyContainedViewClass . create ( ) ;
2014-07-18 12:19:47 -04:00
containerView . pushObject ( alreadyContainedView ) ;
2013-10-16 11:47:51 -04:00
2014-07-18 12:19:47 -04:00
containerView . attachViewClass ( SomeViewClass ) ;
2013-10-16 11:47:51 -04:00
containerHasTwoChildren ( AlreadyContainedViewClass , SomeViewClass ) ;
} ) ;