예제 #1
0
        public void SchemaFirst_AuthorsTest_GetAllAuthors()
        {
            ISchema schema = PubsSchema.GetSchema();

            string query = $" {{ authors {{ authorId lastName firstName phone address city state zip contract }} }}";
            string json  = schema.Execute(_ =>
            {
                //_.Query = query;
                _.Query =
                    @"query AuthorsQuery 
                    {
                        authors
                        { 
                            authorId lastName firstName phone address city state zip contract 
                            titles
                            {
                                titleId title price pubId type pubDate notes advance royalty ytdSales 
                            }
                        } 
                    }";
            });

            var d = JsonConvert.DeserializeObject <dynamic>(json);

            Assert.IsNull(d.errors);
            json = JsonConvert.SerializeObject(d.data.authors);
            Author[] authors = JsonConvert.DeserializeObject <Author[]>(json);

            foreach (Author expected in PubsData.Authors)
            {
                Author author = authors.FirstOrDefault(a => a.AuthorId == expected.AuthorId);
                Assert.IsNotNull(author);

                Assert.AreEqual(expected.AuthorId, author.AuthorId);
                Assert.AreEqual(expected.LastName, author.LastName);
                Assert.AreEqual(expected.FirstName, author.FirstName);
                Assert.AreEqual(expected.Phone, author.Phone);
                Assert.AreEqual(expected.Address, author.Address);
                Assert.AreEqual(expected.City, author.City);
                Assert.AreEqual(expected.State, author.State);
                Assert.AreEqual(expected.Zip, author.Zip);
                Assert.AreEqual(expected.Contract, author.Contract);
            }

            foreach (Author author in authors)
            {
                Author expected = PubsData.Authors.FirstOrDefault(a => a.AuthorId == author.AuthorId);
                Assert.IsNotNull(expected);
            }
        }
예제 #2
0
        public void SchemaFirst_PublisherTest_GetSinglePublisher()
        {
            string publisherId = "0736";

            ISchema schema = PubsSchema.GetSchema();

            // The id parameter here has to match the id parameter in the C# GetAuthor method.
            string json = schema.Execute(_ =>
            {
                //_.Query = $" {{ publisher(id: \"{publisherId}\") {{ pubId name city state country }} }}";
                _.Query =
                    @"  query PublisherQuery
                        {
                            publisher(id: """ + publisherId + @""")
                            {
                                pubId name city state country
                                titles
                                {
                                    titleId title type pubDate price notes pubId advance royalty ytdSales
                                }
                            }
                        }";
            });

            var d = JsonConvert.DeserializeObject <dynamic>(json);

            Assert.IsNull(d.errors);

            json = JsonConvert.SerializeObject(d.data.publisher);
            Publisher publisher = JsonConvert.DeserializeObject <Publisher>(json);

            Assert.IsNotNull(publisher);

            Publisher expectedPublisher = PubsData.Publishers.FirstOrDefault(p => p.PubId == publisherId);

            Assert.IsNotNull(expectedPublisher);

            Assert.AreEqual(expectedPublisher.PubId, (string)d.data.publisher.pubId);
            Assert.AreEqual(expectedPublisher.Name, (string)d.data.publisher.name);
            Assert.AreEqual(expectedPublisher.City, (string)d.data.publisher.city);
            Assert.AreEqual(expectedPublisher.State, (string)d.data.publisher.state);
            Assert.AreEqual(expectedPublisher.Country, (string)d.data.publisher.country);

            Assert.AreEqual(expectedPublisher.PubId, publisher.PubId);
            Assert.AreEqual(expectedPublisher.Name, publisher.Name);
            Assert.AreEqual(expectedPublisher.City, publisher.City);
            Assert.AreEqual(expectedPublisher.State, publisher.State);
            Assert.AreEqual(expectedPublisher.Country, publisher.Country);
        }
예제 #3
0
        public void SchemaFirst_TitlesTest_GetAllTitles()
        {
            ISchema schema = PubsSchema.GetSchema();

            string json = schema.Execute(_ =>
            {
                //_.Query = $" {{ titles {{ titleId title pubId type pubDate notes price advance royalty ytdSales }} }}";
                _.Query =
                    @"query TitleQuery 
                    {
                        titles
                        { 
                            titleId title price pubId type pubDate notes advance royalty ytdSales 
                            authors { authorId lastName firstName phone address city state zip contract }
                            publisher { pubId name city state country }
                        } 
                    }";
            });

            var d = JsonConvert.DeserializeObject <dynamic>(json);

            Assert.IsNull(d.errors);

            json = JsonConvert.SerializeObject(d.data.titles);
            Title[] titles = JsonConvert.DeserializeObject <Title[]>(json);

            foreach (Title expected in PubsData.Titles)
            {
                Title title = titles.FirstOrDefault(a => a.TitleId == expected.TitleId);
                Assert.IsNotNull(title);

                Assert.AreEqual(expected.TitleId, title.TitleId);
                Assert.AreEqual(expected.title, title.title);
                Assert.AreEqual(expected.Price, title.Price);
                Assert.AreEqual(expected.PubId, title.PubId);
                Assert.AreEqual(expected.Type, title.Type);
                Assert.AreEqual(expected.PubDate, title.PubDate);
                Assert.AreEqual(expected.Notes, title.Notes);
                Assert.AreEqual(expected.Advance, title.Advance);
                Assert.AreEqual(expected.Royalty, title.Royalty);
                Assert.AreEqual(expected.YTDSales, title.YTDSales);
            }

            foreach (Title title in titles)
            {
                Title expected = PubsData.Titles.FirstOrDefault(a => a.TitleId == title.TitleId);
                Assert.IsNotNull(expected);
            }
        }
예제 #4
0
        public void SchemaFirst_TitleTest_GetSingleTitle()
        {
            string titleId = "PC1035";

            ISchema schema = PubsSchema.GetSchema();

            // The id parameter here has to match the id parameter in the C# GetAuthor method.
            string json = schema.Execute(_ =>
            {
                _.Query =
                    @"query TitleQuery 
                    {
                        title(id: """ + titleId + @""") 
                        { 
                            titleId title price pubId type pubDate notes advance royalty ytdSales 
                            authors { authorId lastName firstName phone address city state zip contract }
                            publisher { pubId name city state country }
                        } 
                    }";
            });

            var d = JsonConvert.DeserializeObject <dynamic>(json);

            Assert.IsNull(d.errors);

            Title expectedTitle = PubsData.Titles.FirstOrDefault(t => t.TitleId == titleId);

            Assert.IsNotNull(expectedTitle);

            Assert.AreEqual(expectedTitle.TitleId, (string)d.data.title.titleId);
            Assert.AreEqual(expectedTitle.title, (string)d.data.title.title);
            Assert.AreEqual(expectedTitle.Price, (decimal?)d.data.title.price);
            Assert.AreEqual(expectedTitle.PubId, (string)d.data.title.pubId);
            Assert.AreEqual(expectedTitle.Type, (string)d.data.title.type);
            Assert.AreEqual(ToDate(expectedTitle.PubDate), (string)d.data.title.pubDate);
            Assert.AreEqual(expectedTitle.Notes, (string)d.data.title.notes);
            Assert.AreEqual(expectedTitle.Advance, (decimal?)d.data.title.advance);
            Assert.AreEqual(expectedTitle.Royalty, (int?)d.data.title.royalty);
            Assert.AreEqual(expectedTitle.YTDSales, (int?)d.data.title.ytdSales);

            json = JsonConvert.SerializeObject(d.data.title);
            Title title = JsonConvert.DeserializeObject <Title>(json);

            Assert.AreEqual(expectedTitle.TitleId, title.TitleId);
            Assert.AreEqual(expectedTitle.title, title.title);
            Assert.AreEqual(expectedTitle.Price, title.Price);
            Assert.AreEqual(expectedTitle.PubId, title.PubId);
            Assert.AreEqual(expectedTitle.Type, title.Type);
            Assert.AreEqual(expectedTitle.PubDate, title.PubDate);
            Assert.AreEqual(expectedTitle.Notes, title.Notes);
            Assert.AreEqual(expectedTitle.Advance, title.Advance);
            Assert.AreEqual(expectedTitle.Royalty, title.Royalty);
            Assert.AreEqual(expectedTitle.YTDSales, title.YTDSales);

            Assert.IsNotNull(title.Authors);
            Assert.AreEqual(1, title.Authors.Length);
            Author author = title.Authors[0];

            Assert.IsNotNull(author);
            Author expected = PubsData.Authors.FirstOrDefault(a => a.AuthorId == author.AuthorId);

            Assert.IsNotNull(expected);

            Assert.AreEqual(expected.AuthorId, author.AuthorId);
            Assert.AreEqual(expected.LastName, author.LastName);
            Assert.AreEqual(expected.FirstName, author.FirstName);
            Assert.AreEqual(expected.Phone, author.Phone);
            Assert.AreEqual(expected.Address, author.Address);
            Assert.AreEqual(expected.City, author.City);
            Assert.AreEqual(expected.State, author.State);
            Assert.AreEqual(expected.Zip, author.Zip);
            Assert.AreEqual(expected.Contract, author.Contract);

            Publisher publisher         = title.Publisher;
            Publisher expectedPublisher = PubsData.Publishers.FirstOrDefault(p => p.PubId == title.PubId);

            // Note: there is one title that has no publisher. So the data is bad. But that doesn't mean the unit test should fail.
            Assert.IsNotNull(title.Publisher);
            Assert.IsNotNull(expectedPublisher);
            if (!((publisher == null) && (expectedPublisher == null)))
            {
                Assert.IsNotNull(title.Publisher);
                Assert.IsNotNull(expectedPublisher);

                Assert.AreEqual(expectedPublisher.PubId, publisher.PubId);
                Assert.AreEqual(expectedPublisher.Name, publisher.Name);
                Assert.AreEqual(expectedPublisher.City, publisher.City);
                Assert.AreEqual(expectedPublisher.State, publisher.State);
                Assert.AreEqual(expectedPublisher.Country, publisher.Country);
            }
        }
예제 #5
0
        public void SchemaFirst_AuthorTest_GetSingleAuthor()
        {
            string authorId = "899-46-2035";

            ISchema schema = PubsSchema.GetSchema();

            // The id parameter here has to match the id parameter in the C# GetAuthor method.
            string json = schema.Execute(_ =>
            {
                //_.Query = query;
                _.Query =
                    @"query AuthorQuery 
                    {
                        author(id: """ + authorId + @""") 
                        { 
                            authorId lastName firstName phone address city state zip contract 
                            titles
                            {
                                titleId title price pubId type pubDate notes advance royalty ytdSales 
                            }
                        } 
                    }";
            });

            var d = JsonConvert.DeserializeObject <dynamic>(json);

            Assert.IsNull(d.errors);

            json = JsonConvert.SerializeObject(d.data.author);
            Author author = JsonConvert.DeserializeObject <Author>(json);

            Author expectedAuthor = PubsData.Authors.FirstOrDefault(a => a.AuthorId == authorId);

            Assert.IsNotNull(expectedAuthor);
            Assert.IsNotNull(author);

            Assert.AreEqual(expectedAuthor.AuthorId, author.AuthorId);
            Assert.AreEqual(expectedAuthor.LastName, author.LastName);
            Assert.AreEqual(expectedAuthor.FirstName, author.FirstName);
            Assert.AreEqual(expectedAuthor.Phone, author.Phone);
            Assert.AreEqual(expectedAuthor.Address, author.Address);
            Assert.AreEqual(expectedAuthor.City, author.City);
            Assert.AreEqual(expectedAuthor.State, author.State);
            Assert.AreEqual(expectedAuthor.Zip, author.Zip);
            Assert.AreEqual(expectedAuthor.Contract, author.Contract);

            Assert.IsNotNull(author.Titles);
            Assert.AreEqual(2, author.Titles.Length);

            string[] titleIds       = PubsData.TitleAuthors.Where(ta => ta.AuthorId == authorId).Select(ta => ta.TitleId).ToArray();
            Title[]  expectedTitles = PubsData.Titles.Where(t => titleIds.Contains(t.TitleId)).ToArray();

            foreach (Title title in author.Titles)
            {
                Title expectedTitle = expectedTitles.FirstOrDefault(et => et.TitleId == title.TitleId);
                Assert.IsNotNull(expectedTitle);
                Assert.AreEqual(expectedTitle.TitleId, title.TitleId);
                Assert.AreEqual(expectedTitle.title, title.title);
                Assert.AreEqual(expectedTitle.Price, title.Price);
                Assert.AreEqual(expectedTitle.PubId, title.PubId);
                Assert.AreEqual(expectedTitle.Type, title.Type);
                Assert.AreEqual(expectedTitle.PubDate, title.PubDate);
                Assert.AreEqual(expectedTitle.Notes, title.Notes);
                Assert.AreEqual(expectedTitle.Advance, title.Advance);
                Assert.AreEqual(expectedTitle.Royalty, title.Royalty);
                Assert.AreEqual(expectedTitle.YTDSales, title.YTDSales);
            }

            foreach (Title expectedTitle in expectedTitles)
            {
                Title title = author.Titles.FirstOrDefault(t => t.TitleId == expectedTitle.TitleId);
                Assert.IsNotNull(title);
            }
        }