public void ShouldThrowExceptionWhenAreasIsNull()
            {
                var richMenu = new RichMenu();

                ExceptionAssert.Throws <InvalidOperationException>("The areas cannot be null.", () =>
                {
                    RichMenu.Convert(richMenu);
                });
            }
            public void ShouldConvertCustomIRichMenuBoundsToRichMenuBounds()
            {
                var richMenu = new TestRichMenu();

                var convertedRichMenu = RichMenu.Convert(richMenu);

                Assert.AreNotSame(richMenu, convertedRichMenu);
                Assert.AreNotSame(richMenu.Areas, convertedRichMenu.Areas);
                Assert.AreNotSame(richMenu.Size, convertedRichMenu.Size);
            }
            public void ShouldThrowExceptionWhenChatBarTextIsNull()
            {
                var richMenu = new RichMenu()
                {
                    Areas = new IRichMenuArea[1]
                };

                ExceptionAssert.Throws <InvalidOperationException>("The chat bar text cannot be null.", () =>
                {
                    RichMenu.Convert(richMenu);
                });
            }
            public void ShouldThrowExceptionWhenNameIsNull()
            {
                var richMenu = new RichMenu()
                {
                    Areas       = new IRichMenuArea[1],
                    ChatBarText = "foobar"
                };

                ExceptionAssert.Throws <InvalidOperationException>("The name cannot be null.", () =>
                {
                    RichMenu.Convert(richMenu);
                });
            }
            public void ShouldPreserveInstanceWhenValueIsRichMenu()
            {
                var richMenu = new RichMenu
                {
                    ChatBarText = "testChatBarTxt",
                    Name        = "testName",
                    Areas       = new[]
                    {
                        new RichMenuArea
                        {
                            Action = new UriAction {
                                Label = "testLabel", Url = new Uri("http://www.google.com")
                            },
                            Bounds = new RichMenuBounds
                            {
                                Width  = 110,
                                Height = 120,
                                X      = 11,
                                Y      = 12
                            }
                        },
                        new RichMenuArea
                        {
                            Action = new UriAction {
                                Label = "testLabel2", Url = new Uri("http://www.bing.com")
                            },
                            Bounds = new RichMenuBounds
                            {
                                Width  = 210,
                                Height = 220,
                                X      = 21,
                                Y      = 22
                            }
                        }
                    },
                    Size = new RichMenuSize {
                        Height = 1686
                    },
                    Selected = false
                };

                var convertedRichMenu = RichMenu.Convert(richMenu);

                Assert.AreSame(richMenu, convertedRichMenu);
                Assert.AreSame(richMenu.Areas, convertedRichMenu.Areas);
                Assert.AreSame(richMenu.Size, convertedRichMenu.Size);
            }