Exemplo n.º 1
0
        public void UpdateNewsItem()
        {
            var newsItemRequest = new NewsItemRequest
            {
                Id                    = 1,
                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 }
            };

            string apiMethod  = string.Format("/News/NewsItem/{0}", newsItemRequest.Id);
            string parameters = @"subject=Subject&contents=Contents&editedstaffid=1&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";

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

            var newsItem = _newsController.UpdateNewsItem(newsItemRequest);

            _kayakoApiRequest.Verify(x => x.ExecutePut <NewsItemCollection>(apiMethod, parameters), Times.Once());
            Assert.That(newsItem, Is.EqualTo(_responseNewsItemCollection.FirstOrDefault()));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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 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);
        }