public void CreateNewsItem()
        {
            string apiMethod = "/News/NewsItem";
            string parameters = @"subject=Subject&contents=Contents&staffid=1&newstype=3&newsstatus=1&fromname=FromName&[email protected]&customemailsubject=CustomEmailSubject&sendemail=0&allowcomments=1&uservisibilitycustom=1&usergroupidlist=1,2&staffvisibilitycustom=1&staffgroupidlist=1,2&expiry=12/31/2015&newscategoryidlist=1";

            var newsItemRequest = new NewsItemRequest
                {
                    Subject = "Subject",
                    Contents = "Contents",
                    StaffId = 1,
                    NewsItemType = NewsItemType.Private,
                    NewsItemStatus = NewsItemStatus.Draft,
                    FromName = "FromName",
                    Email = "*****@*****.**",
                    CustomEmailSubject = "CustomEmailSubject",
                    SendEmail = false,
                    AllowComments = true,
                    UserVisibilityCustom = true,
                    UserGroupIdList = new[] {1, 2},
                    StaffVisibilityCustom = true,
                    StaffGroupIdList = new[] {1, 2},
                    Expiry = new UnixDateTime(DateTime.Parse("31/12/2015 15:30:00", CultureInfo.CreateSpecificCulture("en-GB"))),
                    Categories = new[] {1}
                };

            _kayakoApiRequest.Setup(x => x.ExecutePost<NewsItemCollection>(apiMethod, parameters)).Returns(_responseNewsItemCollection);

            var newsItem = _newsController.CreateNewsItem(newsItemRequest);

            _kayakoApiRequest.Verify(x => x.ExecutePost<NewsItemCollection>(apiMethod, parameters), Times.Once());
            Assert.That(newsItem, Is.EqualTo(_responseNewsItemCollection.FirstOrDefault()));
        }
        public void CreateUpdateDeleteNewsItem()
        {
            var newsItemRequest = new NewsItemRequest
            {
                Subject = "Subject",
                Contents = "Contents",
                StaffId = 1,
                NewsItemType = NewsItemType.Global,
                NewsItemStatus = NewsItemStatus.Draft,
                SendEmail = false,
                AllowComments = true,
                Expiry = new UnixDateTime(DateTime.Parse("31/12/2015 23:59:59", CultureInfo.CreateSpecificCulture("en-GB"))),
            };

            var newsItem = TestSetup.KayakoApiService.News.CreateNewsItem(newsItemRequest);

            Assert.IsNotNull(newsItem);
            Assert.That(newsItem.Subject, Is.EqualTo(newsItemRequest.Subject));
            Assert.That(newsItem.Contents, Is.EqualTo(newsItemRequest.Contents));
            Assert.That(newsItem.StaffId, Is.EqualTo(newsItemRequest.StaffId));
            Assert.That(newsItem.NewsItemType, Is.EqualTo(newsItemRequest.NewsItemType));
            Assert.That(newsItem.NewsItemStatus, Is.EqualTo(newsItemRequest.NewsItemStatus));
            Assert.That(newsItem.AllowComments, Is.EqualTo(newsItemRequest.AllowComments));
            Assert.That(newsItem.Expiry.UnixTimeStamp, Is.EqualTo(newsItemRequest.Expiry.UnixTimeStamp));

            newsItemRequest = NewsItemRequest.FromResponseData(newsItem);
            newsItemRequest.Contents = "Contents Updated";
            newsItemRequest.Subject = "Subject Updated";

            newsItem = TestSetup.KayakoApiService.News.UpdateNewsItem(newsItemRequest);

            Assert.IsNotNull(newsItem);
            Assert.That(newsItem.Subject, Is.EqualTo(newsItemRequest.Subject));
            Assert.That(newsItem.Contents, Is.EqualTo(newsItemRequest.Contents));

            var deleteSuccess = TestSetup.KayakoApiService.News.DeleteNewsItem(newsItem.Id);

            Assert.IsTrue(deleteSuccess);
        }
		public static NewsItem ToResponseData(NewsItemRequest requestData)
		{
			return ToResponseType<NewsItemRequest, NewsItem>(requestData);
		}
Example #4
0
 public static NewsItem ToResponseData(NewsItemRequest requestData)
 {
     return(ToResponseType <NewsItemRequest, NewsItem>(requestData));
 }
Example #5
0
 public static NewsItem ToResponseData(NewsItemRequest requestData) => ToResponseType <NewsItemRequest, NewsItem>(requestData);
		private static RequestBodyBuilder PopulateRequestParameters(NewsItemRequest newsItem, RequestTypes requestType)
		{
			newsItem.EnsureValidData(requestType);

			RequestBodyBuilder parameters = new RequestBodyBuilder();
			parameters.AppendRequestDataNonEmptyString("subject", newsItem.Subject);
			parameters.AppendRequestDataNonEmptyString("contents", newsItem.Contents);

			if (requestType == RequestTypes.Create)
			{
				parameters.AppendRequestDataNonNegativeInt("staffid", newsItem.StaffId);
			}
			else
			{
				parameters.AppendRequestDataNonNegativeInt("editedstaffid", newsItem.StaffId);
			}

			if (requestType == RequestTypes.Create && newsItem.NewsItemType.HasValue)
			{
				parameters.AppendRequestData("newstype", EnumUtility.ToApiString(newsItem.NewsItemType));
			}

			if (newsItem.NewsItemStatus.HasValue)
			{
				parameters.AppendRequestData("newsstatus", EnumUtility.ToApiString(newsItem.NewsItemStatus));
			}

			parameters.AppendRequestDataNonEmptyString("fromname", newsItem.FromName);
			parameters.AppendRequestDataNonEmptyString("email", newsItem.Email);
			parameters.AppendRequestDataNonEmptyString("customemailsubject", newsItem.CustomEmailSubject);
			parameters.AppendRequestDataBool("sendemail", newsItem.SendEmail);
			parameters.AppendRequestDataBool("allowcomments", newsItem.AllowComments);
			parameters.AppendRequestDataBool("uservisibilitycustom", newsItem.UserVisibilityCustom);
			parameters.AppendRequestDataArrayCommaSeparated("usergroupidlist", newsItem.UserGroupIdList);
			parameters.AppendRequestDataBool("staffvisibilitycustom", newsItem.StaffVisibilityCustom);
			parameters.AppendRequestDataArrayCommaSeparated("staffgroupidlist", newsItem.StaffGroupIdList);
			parameters.AppendRequestData("expiry", newsItem.Expiry.DateTime.ToString("M/d/yyyy"));
			parameters.AppendRequestDataArrayCommaSeparated("newscategoryidlist", newsItem.Categories);
			
			return parameters;
		}
		public NewsItem UpdateNewsItem(NewsItemRequest newsItemRequest)
		{
			string apiMethod = string.Format("{0}/{1}", NewsItemBaseUrl, newsItemRequest.Id);

			RequestBodyBuilder parameters = PopulateRequestParameters(newsItemRequest, RequestTypes.Update);

			NewsItemCollection newsItems = Connector.ExecutePut<NewsItemCollection>(apiMethod, parameters.ToString());

			if (newsItems != null && newsItems.Count > 0)
			{
				return newsItems[0];
			}

			return null;
		}
		public NewsItem CreateNewsItem(NewsItemRequest newsItemRequest)
		{
			RequestBodyBuilder parameters = PopulateRequestParameters(newsItemRequest, RequestTypes.Create);

			NewsItemCollection newsItems = Connector.ExecutePost<NewsItemCollection>(NewsItemBaseUrl, parameters.ToString());

			if (newsItems != null && newsItems.Count > 0)
			{
				return newsItems[0];
			}

			return null;
		}