             context("when fullscreen is done by player") {
 
                 var core: Core!
+                var fullscreenHandler: FullscreenStateHandler!
 
                 beforeEach {
                     core = Core()
+                    fullscreenHandler = core.fullscreenHandler
                 }
 
                 context("and player enter in fullscreen mode") {
 
+                    beforeEach {
+                        fullscreenHandler.exitFullscreen([:])
+                    }
+
                     it("should set property `fullscreen` of mediaControll to `true`") {
-                        core.mediaControl?.fullscreen = false
-                        core.fullscreenHandler.enterInFullscreen([:])
+                        fullscreenHandler.enterInFullscreen([:])
                         expect(core.mediaControl?.fullscreen).to(beTrue())
                     }
 
                     it("should post notification `willEnterFullscreen`") {
-                        let fullscreenHandler = core.fullscreenHandler
                         self.expectation(forNotification: InternalEvent.willEnterFullscreen.rawValue, object: fullscreenHandler) { notification in
                             return true
                         }


                context("and player close fullscreen mode") {

                    it("should set property `fullscreen` of mediaControll to `true`") {
                        core.mediaControl?.fullscreen = false
                        core.fullscreenHandler.enterInFullscreen([:])
                        expect(core.mediaControl?.fullscreen).to(beTrue())
                    }



                    it("should post notification `exitFullscreen`") {
                        let fullscreenHandler = core.fullscreenHandler
                        self.expectation(forNotification: Event.exitFullscreen.rawValue, object: fullscreenHandler) { notification in
                            return true
                        }

                    }

                    it("should post notification `didEnterFullscreen`") {
                        self.expectation(forNotification: InternalEvent.didEnterFullscreen.rawValue, object: fullscreenHandler) { notification in
                            return true
                        }
                        fullscreenHandler.enterInFullscreen([:])
                        self.waitForExpectations(timeout: 2, handler: nil)
                    }

                    it("should set layout to fullscreen") {
                        fullscreenHandler.enterInFullscreen([:])
                        let controller = core.fullscreenController
                        expect(controller.view.backgroundColor).to(equal(UIColor.black))
                        expect(controller.modalPresentationStyle).to(equal(UIModalPresentationStyle.overFullScreen))
                        expect(controller.view.subviews.contains(core)).to(beTrue())
                    }
                }

                context("and player close fullscreen mode") {

                    beforeEach {
                        fullscreenHandler.enterInFullscreen([:])
                    }

                    it("should set property `fullscreen` of mediaControll to `false`") {
                        fullscreenHandler.exitFullscreen([:])
                        expect(core.mediaControl?.fullscreen).to(beFalse())
                    }

                    it("should post notification `willExitFullscreen`") {
                        self.expectation(forNotification: InternalEvent.willExitFullscreen.rawValue, object: fullscreenHandler) { notification in
                            return true
                        }
