예제 #1
0
        public void ShouldAddItemElementsAsChildrenOfItems()
        {
            var shop = new ShopBuilder(new Uri("http://localhost/"))
                .AddItem(new Item("item1", new Amount("g", 250)))
                .AddItem(new Item("item2", new Amount("g", 500), new Cost("GBP", 5.50)))
                .Build();

            var xml = new XmlOutput(new ShopFormatter(shop).CreateXml());

            Assert.AreEqual(2, xml.GetNodeCount("r:shop/r:items/r:item"));

            Assert.AreEqual("item1", xml.GetNodeValue("r:shop/r:items/r:item[1]/r:description"));
            Assert.AreEqual("g", xml.GetNodeValue("r:shop/r:items/r:item[1]/r:amount/@measure"));
            Assert.AreEqual("250", xml.GetNodeValue("r:shop/r:items/r:item[1]/r:amount"));
            Assert.IsNull(xml.GetNode("r:shop/r:items/r:item[1]/r:price"));

            Assert.AreEqual("item2", xml.GetNodeValue("r:shop/r:items/r:item[2]/r:description"));
            Assert.AreEqual("g", xml.GetNodeValue("r:shop/r:items/r:item[2]/r:amount/@measure"));
            Assert.AreEqual("500", xml.GetNodeValue("r:shop/r:items/r:item[2]/r:amount"));
            Assert.AreEqual("GBP", xml.GetNodeValue("r:shop/r:items/r:item[2]/r:price/@currency"));
            Assert.AreEqual("5.50", xml.GetNodeValue("r:shop/r:items/r:item[2]/r:price"));
        }
예제 #2
0
        public void ShouldCreateLinksAsChildrenOfShopElement()
        {
            var shop = new ShopBuilder(new Uri("http://localhost/"))
                .AddLink(new Link(new Uri("/quotes", UriKind.Relative), RestbucksMediaType.Value, LinkRelations.Rfq, LinkRelations.Prefetch))
                .AddLink(new Link(new Uri("/order-forms/1234", UriKind.Relative), "application/xml", LinkRelations.OrderForm))
                .Build();

            var xml = new XmlOutput(new ShopFormatter(shop).CreateXml());

            Assert.AreEqual(2, xml.GetNodeCount("r:shop/r:link"));

            Assert.AreEqual("rb:rfq prefetch", xml.GetNodeValue("r:shop/r:link[1]/@rel"));
            Assert.AreEqual("/quotes", xml.GetNodeValue("r:shop/r:link[1]/@href"));
            Assert.AreEqual(RestbucksMediaType.Value, xml.GetNodeValue("r:shop/r:link[1]/@type"));

            Assert.AreEqual("rb:order-form", xml.GetNodeValue("r:shop/r:link[2]/@rel"));
            Assert.AreEqual("application/xml", xml.GetNodeValue("r:shop/r:link[2]/@type"));
            Assert.AreEqual("/order-forms/1234", xml.GetNodeValue("r:shop/r:link[2]/@href"));
        }
예제 #3
0
        public void ShouldAddXmlBaseAttributeToRootElement()
        {
            var formatter = new ShopFormatter(new ShopBuilder(new Uri("http://restbucks.com:8080/shop")).Build());
            var xml = new XmlOutput(formatter.CreateXml());

            Assert.AreEqual("http://restbucks.com:8080/shop", xml.GetNodeValue("r:shop/@xml:base"));
        }
예제 #4
0
        public void ShouldAddFormsAsChildrenOfShopElement()
        {
            var shop = new ShopBuilder(new Uri("http://localhost"))
                .AddForm(new Form("request-for-quote", new Uri("/quotes", UriKind.Relative), "post", RestbucksMediaType.Value, new Uri("http://schemas.restbucks.com/shop")))
                .AddForm(new Form("order", new Uri("/orders", UriKind.Relative), "put", RestbucksMediaType.Value, new ShopBuilder(new Uri("http://localhost"))
                                                                                                                                      .Build()))
                .Build();

            var output = new XmlOutput(new ShopFormatter(shop).CreateXml());

            Assert.AreEqual(2, output.GetNodeCount("r:shop/x:model"));

            Assert.AreEqual("http://schemas.restbucks.com/shop", output.GetNodeValue("r:shop/x:model[1]/@schema"));
            Assert.AreEqual("request-for-quote", output.GetNodeValue("r:shop/x:model[1]/@id"));
            Assert.AreEqual("/quotes", output.GetNodeValue("r:shop/x:model[1]/x:submission/@resource"));
            Assert.AreEqual("post", output.GetNodeValue("r:shop/x:model[1]/x:submission/@method"));
            Assert.AreEqual(RestbucksMediaType.Value, output.GetNodeValue("r:shop/x:model[1]/x:submission/@mediatype"));
            Assert.AreEqual(string.Empty, output.GetNodeValue("r:shop/x:model[1]/x:instance"));

            Assert.IsNull(output.GetNode("r:shop/x:model[2]/@schema"));
            Assert.AreEqual("order", output.GetNodeValue("r:shop/x:model[2]/@id"));
            Assert.AreEqual("/orders", output.GetNodeValue("r:shop/x:model[2]/x:submission/@resource"));
            Assert.AreEqual("put", output.GetNodeValue("r:shop/x:model[2]/x:submission/@method"));
            Assert.AreEqual(RestbucksMediaType.Value, output.GetNodeValue("r:shop/x:model[2]/x:submission/@mediatype"));
            Assert.AreEqual(string.Empty, output.GetNodeValue("r:shop/x:model[2]/x:instance/r:shop"));
        }