                         let origin = rightView.convert(rightView.frame.origin, to: sut)
                         let expectation = CGPoint(x: sut.bounds.maxX, y: sut.bounds.minY)
                         expect(origin).to(equal(expectation))
+                    }
+
+                    context("change right view") {
+                        var newRightView: UIView!
+
+                        beforeEach {
+                            newRightView = UIView(frame: .zero)
+                            sut.rightView = newRightView
+                            sut.setNeedsLayout()
+                            sut.layoutIfNeeded()
+                        }
+
+                        it("should have correct right view") {
+                            expect(sut.rightView).to(be(newRightView))
+                        }
+
+                        it("should new right view have superview") {
+                            expect(newRightView.superview).notTo(beNil())
+                        }
+
+                        it("should previous right view not have superview") {
+                            expect(rightView.superview).to(beNil())
+                        }
                     }
 
                     context("reveal right") {

                        sut.layoutIfNeeded()
                    }

                    it("should have right view") {
                        expect(sut.rightView).to(be(rightView))
                    }

                    it("should right view have correct size") {

                    sut.layoutIfNeeded()
                }

                it("should have correct content view") {
                    expect(sut.contentView).to(be(contentView))
                }

                it("should content view have superview") {
                    expect(contentView.superview).notTo(beNil())
                }

                it("should content view have correct size") {
