@@ -371,14 +371,61 @@ var _ = Describe("application", func() {
371371			Expect (err ).NotTo (HaveOccurred ())
372372		})
373373
374- 		It ("should support watching For & Owns as metadata" , func () {
374+ 		It ("should support watching For, Owns, and Watch as metadata" , func () {
375+ 			statefulSetMaps  :=  make (chan  * metav1.PartialObjectMetadata )
376+ 
375377			bldr  :=  ControllerManagedBy (mgr ).
376378				For (& appsv1.Deployment {}, OnlyMetadata ).
377- 				Owns (& appsv1.ReplicaSet {}, OnlyMetadata )
379+ 				Owns (& appsv1.ReplicaSet {}, OnlyMetadata ).
380+ 				Watches (& source.Kind {Type : & appsv1.StatefulSet {}},
381+ 					handler .EnqueueRequestsFromMapFunc (func (o  client.Object ) []reconcile.Request  {
382+ 						ometa  :=  o .(* metav1.PartialObjectMetadata )
383+ 						statefulSetMaps  <-  ometa 
384+ 						return  nil 
385+ 					}),
386+ 					OnlyMetadata )
378387
379388			ctx , cancel  :=  context .WithCancel (context .Background ())
380389			defer  cancel ()
381390			doReconcileTest (ctx , "8" , bldr , mgr , true )
391+ 
392+ 			By ("Creating a new stateful set" )
393+ 			set  :=  & appsv1.StatefulSet {
394+ 				ObjectMeta : metav1.ObjectMeta {
395+ 					Namespace : "default" ,
396+ 					Name :      "test1" ,
397+ 					Labels : map [string ]string {
398+ 						"foo" : "bar" ,
399+ 					},
400+ 				},
401+ 				Spec : appsv1.StatefulSetSpec {
402+ 					Selector : & metav1.LabelSelector {
403+ 						MatchLabels : map [string ]string {"foo" : "bar" },
404+ 					},
405+ 					Template : corev1.PodTemplateSpec {
406+ 						ObjectMeta : metav1.ObjectMeta {Labels : map [string ]string {"foo" : "bar" }},
407+ 						Spec : corev1.PodSpec {
408+ 							Containers : []corev1.Container {
409+ 								{
410+ 									Name :  "nginx" ,
411+ 									Image : "nginx" ,
412+ 								},
413+ 							},
414+ 						},
415+ 					},
416+ 				},
417+ 			}
418+ 			err  :=  mgr .GetClient ().Create (context .TODO (), set )
419+ 			Expect (err ).NotTo (HaveOccurred ())
420+ 
421+ 			By ("Checking that the mapping function has been called" )
422+ 			Eventually (func () bool  {
423+ 				metaSet  :=  <- statefulSetMaps 
424+ 				Expect (metaSet .Name ).To (Equal (set .Name ))
425+ 				Expect (metaSet .Namespace ).To (Equal (set .Namespace ))
426+ 				Expect (metaSet .Labels ).To (Equal (set .Labels ))
427+ 				return  true 
428+ 			}).Should (BeTrue ())
382429		})
383430	})
384431})
0 commit comments