public void FindAtThreeDeepSuccess() { //Arrange // To test for matching paths in root and submenus string testXml = @" <menu> <item> <displayName>Home</displayName> <path value='/Default.aspx'/> </item> <item> <displayName>Trips</displayName> <path value='/Requests/Quotes/CreateQuote.aspx'/> <subMenu> <item superOverride='true'> <displayName>Scheduled Trips</displayName> <path value='/Requests/Trips/ScheduledTrips.aspx'/> </item> <item> <displayName>Open Quotes</displayName> <path value='/Requests/OpenQuotes.aspx'/> <subMenu> <item superOverride='true'> <displayName>Scheduled Trips</displayName> <path value='/Requests/Trips/ScheduledTrips.aspx'/> </item> <item> <displayName>Open Quotes at leaf</displayName> <path value='/Default.aspx'/> </item> </subMenu> </item> </subMenu> </item> </menu>"; XPathDocument testInput = CreateXmLDocument(testXml); //Act MenuParser menu = new MenuParser("/Requests/Trips/ScheduledTrips.aspx"); bool result = menu.Parse(testInput); List <MenuNode> found = menu.FindAll(x => x.Path.Equals("/Requests/Trips/ScheduledTrips.aspx")); //Assert // The following is not an idea Unit test construction because it assumes knowledge of what is being tested. // That is a fault of the abstraction being incomplete. This is solved by providing an acces abstraction, // such as an iterator so the individual menu items can be retrieved with operations. too complex for this // code exercise but would definatately be needed for production use - just in general. Assert.IsNotNull(menu); Assert.IsTrue(2 == found.Count); Assert.AreSame(menu.Items [1].SubMenu[0], found[0]); Assert.AreSame(menu.Items [1].SubMenu[1].SubMenu[0], found[1]); }
public void ActiveMenuThreeDeepSuccess() { //Arrange // To test for active paths in root and submenus string testXml = @" <menu> <item> <displayName>Home</displayName> <path value='/NotDefault.aspx'/> </item> <item> <displayName>Trips</displayName> <path value='/Requests/Quotes/CreateQuote.aspx'/> <subMenu> <item superOverride='true'> <displayName>Scheduled Trips</displayName> <path value='/Requests/Trips/ScheduledTrips.aspx'/> </item> <item> <displayName>Open Quotes</displayName> <path value='/Requests/OpenQuotes.aspx'/> <subMenu> <item superOverride='true'> <displayName>Scheduled Trips</displayName> <path value='/Requests/Trips/ScheduledTrips.aspx'/> </item> <item> <displayName>Open Quotes at leaf</displayName> <path value='/Default.aspx'/> </item> </subMenu> </item> </subMenu> </item> </menu>"; XPathDocument testInput = CreateXmLDocument(testXml); //Act MenuParser menu = new MenuParser("/Default.aspx"); bool result = menu.Parse(testInput); List <MenuNode> found = menu.FindAll(x => true == x.Active); //Assert Assert.IsNotNull(menu); Assert.IsTrue(3 == found.Count); Assert.IsTrue(found[0].Name.Equals("Trips")); Assert.IsTrue(found[1].Name.Equals("Open Quotes")); Assert.IsTrue(found[2].Name.Equals("Open Quotes at leaf")); }