Example #1
0
        public async Task Query_Get_InvalidConfigThrows()
        {
            // Arrange
            IGetit getit  = new Getit();
            Config config = null;

            IQuery query     = getit.Query();
            IQuery subSelect = getit.Query();

            // Nearest Dealer has a sub-select of a dealer
            subSelect
            .Name("Dealer")
            .Select("id", "subId", "name", "make");

            // main query, with distance, and sub-select
            query
            .Name("NearestDealer")
            .Select("distance")
            .Select(subSelect)
            .Where("zip", "91302")
            .Where("makeId", 16);

            // ReSharper disable once ExpressionIsAlwaysNull
            await Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await getit.Get <string>(query, config));
        }
Example #2
0
        public void SetConfig_NullSetConfig_ThrowsException()
        {
            // Arrange
            Getit getit = new Getit();

            // Assert
            Assert.ThrowsException <ArgumentNullException>(() => getit.Config = null);
        }
Example #3
0
        public async Task Get_NullConfig_ThrowsException()
        {
            // Arrange
            IGetit getit = new Getit();
            IQuery query = new Query();

            // Assert
            await Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await getit.Get <String>(query));
        }
Example #4
0
        public void Query_ToString_ReturnsCorrect()
        {
            // Arrange
            Getit  getit = new Getit();
            IQuery query = getit.Query().Name("test1").Select("id");

            // Assert
            Assert.AreEqual("{test1{id}}", RemoveWhitespace(query.ToString()));
        }
Example #5
0
        public void SetConfig_ValidConfig_ReturnsConfig()
        {
            // Arrange
            IConfig expectedConfig = new Config("http://haystack.calhoon.com");

            //Act
            IGetit getit = new Getit(expectedConfig);

            // Assert
            Assert.AreEqual(expectedConfig, getit.Config);
        }
Example #6
0
        public void Query_SelectParams_ReturnsCorrect()
        {
            const string select = "zip";

            // Arrange
            Getit  getit = new Getit();
            IQuery query = getit.Query().Select(select);

            // Assert
            Assert.AreEqual(select, query.SelectList.First());
        }
Example #7
0
        public void Query_Unique_ReturnsCorrect()
        {
            // Arrange
            Getit  getit  = new Getit();
            IQuery query  = getit.Query().Select("zip");
            IQuery query1 = getit.Query().Select("pitydodah");

            // Assert counts and not the same
            Assert.IsTrue(query.SelectList.Count == 1);
            Assert.IsTrue(query1.SelectList.Count == 1);
            Assert.AreNotEqual(query.SelectList.First(), query1.SelectList.First());
        }
Example #8
0
 public QueryCreationService()
 {
     _getit = new Getit(new Config(END_POINT_ADDRESS));
 }
Example #9
0
        public void ComplexQuery_ToString_Check()
        {
            // Arrange
            Getit  getit     = new Getit();
            IQuery query     = getit.Query();
            IQuery subSelect = getit.Query();

            // set up a couple of ENUMS
            EnumHelper gqlEnumEnabled  = new EnumHelper().Enum("ENABLED");
            EnumHelper gqlEnumDisabled = new EnumHelper("DISABLED");

            // set up a subselection list
            List <object> subSelList = new List <object>(new object[] { "subName", "subMake", "subModel" });

            // set up a subselection parameter (where)
            // has simple string, int, and a couple of ENUMs
            Dictionary <string, object> mySubDict = new Dictionary <string, object>
            {
                { "subMake", "aston martin" },
                { "subState", "ca" },
                { "subLimit", 1 },
                { "_debug", gqlEnumDisabled },
                { "SuperQuerySpeed", gqlEnumEnabled }
            };

            // Create a Sub Select Query
            subSelect
            .Select(subSelList)
            .Name("subDealer")
            .Where(mySubDict)
            .Comment("SubSelect Below!");

            // Add that subselect to the main select
            List <object> selList = new List <object>(new object[] { "id", subSelect, "name", "make", "model" });

            // List of int's (IDs)
            List <int> trimList = new List <int>(new[] { 143783, 243784, 343145 });

            // String List
            List <string> modelList = new List <string>(new[] { "DB7", "DB9", "Vantage" });

            // Another List but of Generic Objects that should work as strings
            List <object> recList = new List <object>(new object[] { "aa", "bb", "cc" });

            // try a dict for the typical from to with doubles
            Dictionary <string, object> recMap = new Dictionary <string, object>
            {
                { "from", 444.45 },
                { "to", 555.45 },
            };

            // try a dict for nested list and dict
            Dictionary <string, object> fromToPrice = new Dictionary <string, object>
            {
                { "from", 123 },
                { "to", 454 },
                { "recurse", recList },
                { "map", recMap }
            };

            // Even more stuff nested in the params
            Dictionary <string, object> myDict = new Dictionary <string, object>
            {
                { "make", "aston martin" },
                { "state", "ca" },
                { "limit", 2 },
                { "trims", trimList },
                { "models", modelList },
                { "price", fromToPrice },
                { "_debug", gqlEnumEnabled },
            };

            // Generate the query with an alias and multi-line comment
            query
            .Select(selList)
            .Name("Dealer")
            .Alias("myDealerAlias")
            .Where(myDict)
            .Comment("My First GQL Query with getit\na second line of comments\nand yet another line of comments");

            // Get and pack results
            string packedResults = RemoveWhitespace(query.ToString());
            string packedCheck   = RemoveWhitespace(@"
                    {myDealerAlias: Dealer(make: ""aston martin"", state: ""ca"", limit: 2, trims:[143783, 243784, 343145], models:[""DB7"", ""DB9"", ""Vantage""],
                    price:{ from: 123, to: 454, recurse:[""aa"", ""bb"", ""cc""], map: { from: 444.45, to: 555.45} },
                    _debug: ENABLED){
                    # My First GQL Query with getit
                    # a second line of comments
                    # and yet another line of comments
                    id
                    subDealer(subMake: ""aston martin"", subState: ""ca"", subLimit: 1, _debug: DISABLED, SuperQuerySpeed: ENABLED){
                        # SubSelect Below!
                        subName
                        subMake
                        subModel
                    }
                    name
                    make
                    model
                }}");

            // Best be the same!
            Assert.AreEqual(packedResults, packedCheck);
        }
Example #10
0
        public AniListRepository()
        {
            Config config = new Config("https://graphql.anilist.co");

            _getit = new Getit(config);
        }