public void EnsureVariableNameIsNotReserved_AppendsTheAtSignOnCsharpKeywords()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            var keyword = "event";
            //Act
            var result = CommonGenerator.EnsureVariableNameIsNotReserved(keyword, expressions);

            //Assert
            Assert.Equal("@event", result);
        }
        public void EnsureVariableNameIsNotReserved_DoesNotModifyVariableNamesIfNotReserved()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            var keyword = "people";
            //Act
            var result = CommonGenerator.EnsureVariableNameIsNotReserved(keyword, expressions);

            //Assert
            Assert.Equal("people", result);
        }
Exemple #3
0
        //This tests asserts that we can properly generate snippets with some property originally set to null.
        public void GeneratesSnippetsWithRecurrencePropertySetToNull()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //This request example is present at the link
            //https://docs.microsoft.com/en-us/graph/api/event-update?view=graph-rest-1.0&tabs=http#request
            const string messageJsonObject = "{\r\n" +
                                             "  \"originalStartTimeZone\": \"originalStartTimeZone-value\",\r\n" +
                                             "  \"originalEndTimeZone\": \"originalEndTimeZone-value\",\r\n" +
                                             "  \"responseStatus\": {\r\n" +
                                             "    \"response\": \"\",\r\n" +
                                             "    \"time\": \"datetime-value\"\r\n" +
                                             "  },\r\n" +
                                             "  \"recurrence\": null,\r\n" +    //property set to null in request object
                                             "  \"iCalUId\": \"iCalUId-value\",\r\n" +
                                             "  \"reminderMinutesBeforeStart\": 99,\r\n" +
                                             "  \"isReminderOn\": true\r\n" +
                                             "}";
            var requestPayload = new HttpRequestMessage(HttpMethod.Patch, "https://graph.microsoft.com/v1.0/me/events/{id}")
            {
                Content = new StringContent(messageJsonObject)
            };

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var @event = new Event\r\n" +
                                           "{\r\n" +
                                           "\tOriginalStartTimeZone = \"originalStartTimeZone-value\",\r\n" +
                                           "\tOriginalEndTimeZone = \"originalEndTimeZone-value\",\r\n" +
                                           "\tResponseStatus = new ResponseStatus\r\n" +
                                           "\t{\r\n" +
                                           "\t\tResponse = ResponseType.None,\r\n" +
                                           "\t\tTime = DateTimeOffset.Parse(\"datetime-value\")\r\n" + //the dateTimeOffset appropriately parsed
                                           "\t},\r\n" +
                                           "\tRecurrence = null,\r\n" +                                //the property has been appropriately set to null
                                           "\tICalUId = \"iCalUId-value\",\r\n" +
                                           "\tReminderMinutesBeforeStart = 99,\r\n" +
                                           "\tIsReminderOn = true\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await graphClient.Me.Events[\"{id}\"]\n" +
                                           "\t.Request()\n" +
                                           "\t.UpdateAsync(@event);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #4
0
        public void GenerateQuerySection_ShouldReturnAppropriateCSharpTopExpression()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //no query present
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/events?$top=5");
            var snippetModel   = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act
            var result = CommonGenerator.GenerateQuerySection(snippetModel, expressions);

            //Assert string is empty
            Assert.Equal("\n\t.Top(5)", result);
        }
Exemple #5
0
        public void GenerateQuerySection_ShouldReturnAppropriateCSharpFilterExpression()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //no query present
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/users?$filter=startswith(givenName, 'J')");
            var snippetModel   = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act
            var result = CommonGenerator.GenerateQuerySection(snippetModel, expressions);

            //Assert string is empty
            Assert.Equal("\n\t.Filter(\"startswith(givenName, 'J')\")", result);
        }
Exemple #6
0
        public void GenerateQuerySection_ShouldReturnAppropriateCSharpSelectExpression()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //no query present
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/users/{id}?$select=displayName,givenName,postalCode");
            var snippetModel   = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act
            var result = CommonGenerator.GenerateQuerySection(snippetModel, expressions);

            //Assert string is empty
            Assert.Equal("\n\t.Select(\"displayName,givenName,postalCode\")", result);
        }
Exemple #7
0
        //This tests asserts that we can properly generate snippets with DateTime strings present and parse them appropriately
        public void GeneratesSnippetsWithDateTimeStrings()
        {
            //Arrange
            LanguageExpressions expressions       = new CSharpExpressions();
            const string        messageJsonObject = "{\r\n" +
                                                    "  \"receivedDateTime\": \"datetime-value\",\r\n" + //dateTimeOffsetObject
                                                    "  \"sentDateTime\": \"datetime-value\",\r\n" +     //dateTime to be parsed
                                                                                                        //https://docs.microsoft.com/en-us/graph/api/resources/message?view=graph-rest-1.0#properties
                                                    "  \"hasAttachments\": true,\r\n" +
                                                    "  \"subject\": \"subject-value\",\r\n" +
                                                    "  \"body\": {\r\n" +
                                                    "    \"contentType\": \"\",\r\n" +
                                                    "    \"content\": \"content-value\"\r\n" +
                                                    "  },\r\n" +
                                                    "  \"bodyPreview\": \"bodyPreview-value\"\r\n" +
                                                    "}";
            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/me/mailFolders/{id}/messages")
            {
                Content = new StringContent(messageJsonObject)
            };

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var message = new Message\r\n" +
                                           "{\r\n" +
                                           "\tReceivedDateTime = DateTimeOffset.Parse(\"datetime-value\"),\r\n" +
                                           "\tSentDateTime = DateTimeOffset.Parse(\"datetime-value\"),\r\n" +
                                           "\tHasAttachments = true,\r\n" +
                                           "\tSubject = \"subject-value\",\r\n" +
                                           "\tBody = new ItemBody\r\n" +
                                           "\t{\r\n" +
                                           "\t\tContentType = BodyType.Text,\r\n" +
                                           "\t\tContent = \"content-value\"\r\n" +
                                           "\t},\r\n" +
                                           "\tBodyPreview = \"bodyPreview-value\"\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await graphClient.Me.MailFolders[\"{id}\"].Messages\n" +
                                           "\t.Request()\n" +
                                           "\t.AddAsync(message);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #8
0
        public void GenerateQuerySection_ShouldReturnAppropriateCSharpRequestHeaderExpressionWithEscapedDoubleQuotes()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //no query present
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/events");

            requestPayload.Headers.Add("Prefer", "outlook.timezone=\"Pacific Standard Time\"");

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act
            var result = CommonGenerator.GenerateQuerySection(snippetModel, expressions);

            //Assert string is empty
            Assert.Equal("\n\t.Header(\"Prefer\",\"outlook.timezone=\\\"Pacific Standard Time\\\"\")", result);
        }
Exemple #9
0
        public void GenerateQuerySection_ShouldReturnAppropriateCSharpRequestHeaderExpression()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //no query present
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/users/{id}");

            requestPayload.Headers.Add("Prefer", "kenya-timezone");

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act
            var result = CommonGenerator.GenerateQuerySection(snippetModel, expressions);

            //Assert string is empty
            Assert.Equal("\n\t.Header(\"Prefer\",\"kenya-timezone\")", result);
        }
Exemple #10
0
        //This test asserts that a request for a structural properties of type stream are generated in the normal url like fashion as
        // streams have the request builders generated.
        public void GeneratesSnippetsWithStructuralPropertiesOfTypeStream()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            var requestPayload = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/drive/items/{item-id}/content");
            var snippetModel   = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var stream = await graphClient.Me.Drive.Items[\"{item-id}\"].Content\n" +
                                           "\t.Request()\n" +
                                           "\t.GetAsync();";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #11
0
        //This tests asserts that we can generate snippets with $ref operator inside it
        public void GeneratesSnippetsWithReferenceSegmentInPath()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();

            var requestPayload = new HttpRequestMessage(HttpMethod.Delete, "https://graph.microsoft.com/v1.0/groups/{id}/owners/{id}/$ref");
            var snippetModel   = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "await graphClient.Groups[\"{id}\"].Owners[\"{id}\"].Reference\n" +
                                           "\t.Request()\n" +
                                           "\t.DeleteAsync();";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #12
0
        //This tests asserts that we can generate snippets from json objects with nested objects inside them.
        public void RecursivelyGeneratesNestedPasswordProfileObjectFromJson()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //json string with nested object properties
            const string userJsonObject = "{\r\n  \"accountEnabled\": true,\r\n  " +
                                          "\"displayName\": \"displayName-value\",\r\n  " +
                                          "\"mailNickname\": \"mailNickname-value\",\r\n  " +
                                          "\"userPrincipalName\": \"[email protected]\",\r\n " +
                                          " \"passwordProfile\" : {\r\n    \"forceChangePasswordNextSignIn\": true,\r\n    \"password\": \"password-value\"\r\n  }\r\n}";//nested passwordProfile Object

            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/users")
            {
                Content = new StringContent(userJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var user = new User\r\n" +
                                           "{\r\n" +
                                           "\tAccountEnabled = true,\r\n" +
                                           "\tDisplayName = \"displayName-value\",\r\n" +
                                           "\tMailNickname = \"mailNickname-value\",\r\n" +
                                           "\tUserPrincipalName = \"[email protected]\",\r\n" +
                                           "\tPasswordProfile = new PasswordProfile\r\n" +   //object with nested properties
                                           "\t{\r\n" +
                                           "\t\tForceChangePasswordNextSignIn = true,\r\n" + //nested object property
                                           "\t\tPassword = \"password-value\"\r\n" +         //nested object property
                                           "\t}\r\n" +
                                           "};\r\n\r\n" +

                                           "await graphClient.Users\n" +
                                           "\t.Request()\n" +
                                           "\t.AddAsync(user);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #13
0
        //This tests asserts that we can properly generate snippets for odata actions with parameters
        public void GeneratesSnippetsForOdataActionsWithParameters()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();

            var requestPayload = new HttpRequestMessage(HttpMethod.Get,
                                                        "https://graph.microsoft.com/v1.0/me/drive/items/{id}/workbook/worksheets/{id|name}/range(address='A1:B2')");
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var workbookRange = await graphClient.Me.Drive.Items[\"{id}\"].Workbook.Worksheets[\"{id|name}\"]\n" +
                                           "\t.Range(\"A1:B2\")\n" +    //parameter has double quotes
                                           "\t.Request()\n" +
                                           "\t.GetAsync();";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #14
0
        //This tests asserts that we can generate snippets with enums separate with Or binary action
        public void GeneratesEnumTypesWithOrSeparatorIfEnumsAreMany()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //json string with nested object array
            const string messageJsonObject = "{\r\n    " +
                                             "\"EmailAddresses\": [\r\n" +
                                             "        \"[email protected]\", \r\n" +
                                             "        \"[email protected]\"\r\n" +
                                             "    ],\r\n" +
                                             "    \"MailTipsOptions\": \"automaticReplies, mailboxFullStatus\"\r\n" +    //this is an enum that should be ORed together
                                             "}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/me/getMailTips")
            {
                Content = new StringContent(messageJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var emailAddresses = new List<String>()\r\n" +
                                           "{\r\n" +
                                           "\t\"[email protected]\",\r\n" +
                                           "\t\"[email protected]\"\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "var mailTipsOptions = MailTipsType.AutomaticReplies | MailTipsType.MailboxFullStatus;\r\n" + //Asserting that this OR is done
                                           "\r\n" +
                                           "await graphClient.Me\n" +
                                           "\t.GetMailTips(emailAddresses,mailTipsOptions)\n" +
                                           "\t.Request()\n" +
                                           "\t.PostAsync();";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #15
0
        //This tests asserts that we can generate snippets from json objects with nested arrays inside them.
        public void RecursivelyGeneratesNestedPhonesListFromJsonObject()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //json string with nested objects string array
            const string userJsonObject = "{\r\n  \"accountEnabled\": true,\r\n  " +
                                          "\"businessPhones\": [\r\n    \"businessPhones-value\",\"businessPhones-value2\",\"businessPhones-value3\"\r\n  ],\r\n  " +//nested ArrayObject with 3 items
                                          "\"city\": \"city-value\"\r\n}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Patch, "https://graph.microsoft.com/v1.0/me")
            {
                Content = new StringContent(userJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var user = new User\r\n" +
                                           "{\r\n" +
                                           "\tAccountEnabled = true,\r\n" +
                                           "\tBusinessPhones = new List<String>()\r\n" +
                                                                                  //Array object
                                           "\t{\r\n" +
                                           "\t\t\"businessPhones-value\",\r\n" +  //nested array item
                                           "\t\t\"businessPhones-value2\",\r\n" + //nested array item
                                           "\t\t\"businessPhones-value3\"\r\n" +  //nested array item
                                           "\t},\r\n" +
                                           "\tCity = \"city-value\"\r\n" +
                                           "};\r\n\r\n" +

                                           "await graphClient.Me\n" +
                                           "\t.Request()\n" +
                                           "\t.UpdateAsync(user);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #16
0
        //This tests asserts that we can generate snippets with $ref that adds/creates references with multiple additionalData inserted
        public void GeneratesSnippetsAddingReferencesToObjectWithExtraAdditionalData()
        {
            //Arrange
            LanguageExpressions expressions       = new CSharpExpressions();
            const string        messageJsonObject = "{\r\n  " +
                                                    "\"@odata.id\": \"https://graph.microsoft.com/v1.0/users/{id}\" ," +
                                                    "\"@odata.context\": \"https://graph.microsoft.com/v1.0/$metadata#users/$entity\"" +
                                                    "\r\n}";
            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/groups/{id}/owners/$ref")
            {
                Content = new StringContent(messageJsonObject)
            };

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var directoryObject = new DirectoryObject\r\n" +
                                           "{\r\n" +
                                           "\tId = \"{id}\",\r\n" +
                                           "\tAdditionalData = new Dictionary<string, object>()\r\n" +
                                           "\t{\r\n" +
                                           "\t\t{\"@odata.context\",\"https://graph.microsoft.com/v1.0/$metadata#users/$entity\"}\r\n" +
                                           "\t}\r\n" +
                                           "};\r\n" +
                                           "\r\n" +

                                           "await graphClient.Groups[\"{id}\"].Owners.References" +
                                           "\n\t.Request()" +
                                           "\n\t.AddAsync(directoryObject);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #17
0
        //This tests asserts that we can properly generate snippets and List that is not a string type but of Enums
        public void GeneratesSnippetsForEnumTypedList()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //This request example is present at the link
            //https://docs.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0&tabs=http#request-3
            const string messageJsonObject = "{\r\n" +
                                             "  \"subject\": \"Let's go for lunch\",\r\n" +
                                             "  \"body\": {\r\n" +
                                             "    \"contentType\": \"HTML\",\r\n" +
                                             "    \"content\": \"Does noon time work for you?\"\r\n" +
                                             "  },\r\n" +
                                             "  \"start\": {\r\n" +
                                             "      \"dateTime\": \"2017-09-04T12:00:00\",\r\n" +
                                             "      \"timeZone\": \"Pacific Standard Time\"\r\n" +
                                             "  },\r\n" +
                                             "  \"end\": {\r\n" +
                                             "      \"dateTime\": \"2017-09-04T14:00:00\",\r\n" +
                                             "      \"timeZone\": \"Pacific Standard Time\"\r\n" +
                                             "  },\r\n" +
                                             "  \"recurrence\": {\r\n" +
                                             "    \"pattern\": {\r\n" +
                                             "      \"type\": \"weekly\",\r\n" +
                                             "      \"interval\": 1,\r\n" +
                                             "      \"daysOfWeek\": [ \"Monday\" ]\r\n" +   //this is a list of enums
                                             "    },\r\n" +
                                             "    \"range\": {\r\n" +
                                             "      \"type\": \"endDate\",\r\n" +
                                             "      \"startDate\": \"2017-09-04\",\r\n" +   //Date Type
                                             "      \"endDate\": \"2017-12-31\"\r\n" +      //Date Type
                                             "    }\r\n" +
                                             "  },\r\n" +
                                             "  \"location\":{\r\n" +
                                             "      \"displayName\":\"Harry's Bar\"\r\n" +
                                             "  },\r\n" +
                                             "  \"attendees\": [\r\n" +
                                             "    {\r\n" +
                                             "      \"emailAddress\": {\r\n" +
                                             "        \"address\":\"[email protected]\",\r\n" +
                                             "        \"name\": \"Adele Vance\"\r\n" +
                                             "      },\r\n" +
                                             "      \"type\": \"required\"\r\n" +
                                             "    }\r\n" +
                                             "  ]\r\n" +
                                             "}";
            var requestPayload = new HttpRequestMessage(HttpMethod.Patch, "https://graph.microsoft.com/v1.0/me/events/{id}")
            {
                Content = new StringContent(messageJsonObject)
            };

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var @event = new Event\r\n" +
                                           "{\r\n" +
                                           "\tSubject = \"Let's go for lunch\",\r\n" +
                                           "\tBody = new ItemBody\r\n" +
                                           "\t{\r\n" +
                                           "\t\tContentType = BodyType.Html,\r\n" +
                                           "\t\tContent = \"Does noon time work for you?\"\r\n" +
                                           "\t},\r\n" +
                                           "\tStart = new DateTimeTimeZone\r\n" +
                                           "\t{\r\n" +
                                           "\t\tDateTime = \"2017-09-04T12:00:00\",\r\n" +
                                           "\t\tTimeZone = \"Pacific Standard Time\"\r\n" +
                                           "\t},\r\n" +
                                           "\tEnd = new DateTimeTimeZone\r\n" +
                                           "\t{\r\n" +
                                           "\t\tDateTime = \"2017-09-04T14:00:00\",\r\n" +
                                           "\t\tTimeZone = \"Pacific Standard Time\"\r\n" +
                                           "\t},\r\n" +
                                           "\tRecurrence = new PatternedRecurrence\r\n" +
                                           "\t{\r\n" +
                                           "\t\tPattern = new RecurrencePattern\r\n" +
                                           "\t\t{\r\n" +
                                           "\t\t\tType = RecurrencePatternType.Weekly,\r\n" +
                                           "\t\t\tInterval = 1,\r\n" +
                                           "\t\t\tDaysOfWeek = new List<DayOfWeek>()\r\n" +            //list of DayOfWeek enum
                                           "\t\t\t{\r\n" +
                                           "\t\t\t\tDayOfWeek.Monday\r\n" +                            //member of list
                                           "\t\t\t}\r\n" +
                                           "\t\t},\r\n" +
                                           "\t\tRange = new RecurrenceRange\r\n" +
                                           "\t\t{\r\n" +
                                           "\t\t\tType = RecurrenceRangeType.EndDate,\r\n" +
                                           "\t\t\tStartDate = new Date(2017,9,4),\r\n" +              //Date Type
                                           "\t\t\tEndDate = new Date(2017,12,31)\r\n" +               //Date Type
                                           "\t\t}\r\n" +
                                           "\t},\r\n" +
                                           "\tLocation = new Location\r\n" +
                                           "\t{\r\n" +
                                           "\t\tDisplayName = \"Harry's Bar\"\r\n" +
                                           "\t},\r\n" +
                                           "\tAttendees = new List<Attendee>()\r\n" +
                                           "\t{\r\n" +
                                           "\t\tnew Attendee\r\n" +
                                           "\t\t{\r\n" +
                                           "\t\t\tEmailAddress = new EmailAddress\r\n" +
                                           "\t\t\t{\r\n" +
                                           "\t\t\t\tAddress = \"[email protected]\",\r\n" +
                                           "\t\t\t\tName = \"Adele Vance\"\r\n" +
                                           "\t\t\t},\r\n" +
                                           "\t\t\tType = AttendeeType.Required\r\n" +
                                           "\t\t}\r\n" +
                                           "\t}\r\n};\r\n" +
                                           "\r\n" +
                                           "await graphClient.Me.Events[\"{id}\"]\n" +
                                           "\t.Request()\n" +
                                           "\t.UpdateAsync(@event);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemple #18
0
        //This tests asserts that we can generate snippets from json objects with nested object lists(JArray) inside them.
        public void RecursivelyGeneratesNestedRecipientListObjectsFromJson()
        {
            //Arrange
            LanguageExpressions expressions = new CSharpExpressions();
            //json string with nested object array
            const string messageJsonObject = "{\r\n    " +
                                             "\"subject\":\"Did you see last night's game?\",\r\n" +
                                             "\"importance\":\"Low\",\r\n" +
                                             "\"body\":{\r\n" +
                                             "\"contentType\":\"HTML\",\r\n" +
                                             "\"content\":\"They were <b>awesome</b>!\"\r\n" +
                                             "},\r\n" +
                                             "\"toRecipients\":[\r\n" +
                                             "{\r\n" +
                                             "\"emailAddress\":{\r\n" +
                                             "\"address\":\"[email protected]\"\r\n" +
                                             "}\r\n" +
                                             "},\r\n" +
                                             "{\r\n" +
                                             "\"emailAddress\":{\r\n" +
                                             "\"address\":\"[email protected]\"\r\n" +
                                             "}\r\n" +
                                             "}\r\n" +
                                             "]\r\n" +
                                             "}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/me/messages")
            {
                Content = new StringContent(messageJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = CSharpGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "var message = new Message\r\n" +
                                           "{\r\n" +
                                           "\tSubject = \"Did you see last night's game?\",\r\n" +
                                           "\tImportance = Importance.Low,\r\n" +
                                           "\tBody = new ItemBody\r\n" +
                                           "\t{\r\n" +
                                           "\t\tContentType = BodyType.Html,\r\n" +
                                           "\t\tContent = \"They were <b>awesome</b>!\"\r\n" +
                                           "\t},\r\n" +
                                           "\tToRecipients = new List<Recipient>()\r\n" +
                                           "\t{\r\n" +
                                           "\t\tnew Recipient\r\n" +
                                           "\t\t{\r\n" +
                                           "\t\t\tEmailAddress = new EmailAddress\r\n" +
                                           "\t\t\t{\r\n" +
                                           "\t\t\t\tAddress = \"[email protected]\"\r\n" +
                                           "\t\t\t}\r\n" +
                                           "\t\t},\r\n" +
                                           "\t\tnew Recipient\r\n" +
                                           "\t\t{\r\n" +
                                           "\t\t\tEmailAddress = new EmailAddress\r\n" +
                                           "\t\t\t{\r\n" +
                                           "\t\t\t\tAddress = \"[email protected]\"\r\n" +
                                           "\t\t\t}\r\n" +
                                           "\t\t}\r\n" +
                                           "\t}\r\n" +
                                           "};\r\n\r\n" +

                                           "await graphClient.Me.Messages\n" +
                                           "\t.Request()\n" +
                                           "\t.AddAsync(message);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }