Exemplo n.º 1
0
        public void GetTopicsByUnitID()
        {
            // Fill empty string parameters "" with auto-generated string.
            testEntityFactory.PopulateEmptyStrings = true;

            // Add test helpdesk.
            TestDataHelpdesk helpdeskData = testEntityFactory.AddHelpdesk();

            // Check that helpdesk was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, helpdeskData.Response.Status);
            Assert.IsTrue(helpdeskData.Response.HelpdeskID > 0);

            // Create a unit. ID provided is 0, which will indicates creation of new helpdesk.
            List <string> topics   = new List <string>(new string[] { "Layouts", "Lifecycle" });
            TestDataUnit  unitData = testEntityFactory.AddUpdateUnit(0, helpdeskData.Response.HelpdeskID, "", "", false, topics);

            // Check that unit was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, unitData.Response.Status);
            Assert.IsTrue(unitData.Response.UnitID > 0);

            // Get all topics associated with the unit id.
            var topicsFacade = new TopicsFacade();
            GetTopicsByUnitIDResponse topicResponse = topicsFacade.GetTopicsByUnitID(unitData.Response.UnitID);

            // Check that the topics retrieved are correct.
            Assert.AreEqual(HttpStatusCode.OK, unitData.Response.Status);
            Assert.IsTrue(topicResponse.Topics.Count == 3);
        }
        /// <summary>
        /// This method is used to get all topics of a specific unit
        /// </summary>
        /// <param name="id">ID of the unit to get topics from</param>
        /// <returns>Response which indicates success or failure</returns>
        public GetTopicsByUnitIDResponse GetTopicsByUnitID(int id)
        {
            var response = new GetTopicsByUnitIDResponse();

            try
            {
                var             dataLayer = new TopicsDataLayer();
                List <TopicDTO> topics    = dataLayer.GetTopicsByUnitID(id);

                if (topics.Count == 0)
                {
                    throw new NotFoundException("No topics found under unit " + id);
                }

                response.Topics = topics;
                response.Status = HttpStatusCode.OK;
            }
            catch (NotFoundException ex)
            {
                s_logger.Error(ex, "No unit found found matching id " + id);
                response.Status = HttpStatusCode.NotFound;
                response.StatusMessages.Add(new StatusMessage(HttpStatusCode.NotFound, "No topics found!"));
            }
            catch (Exception ex)
            {
                s_logger.Error(ex, "Unable to get topics!");
                response.Status = HttpStatusCode.InternalServerError;
                response.StatusMessages.Add(new StatusMessage(HttpStatusCode.InternalServerError, "Unable to get topics!"));
            }
            return(response);
        }
        public void UpdateQueueItem()
        {
            // Fill empty string parameters "" with auto-generated string.
            testEntityFactory.PopulateEmptyStrings = true;

            // Add test helpdesk.
            TestDataHelpdesk helpdeskData = testEntityFactory.AddHelpdesk();

            // Check that helpdesk was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, helpdeskData.Response.Status);
            Assert.IsTrue(helpdeskData.Response.HelpdeskID > 0);

            // Create a unit. ID provided is 0, which will indicates creation of new helpdesk.
            List <string> topics   = new List <string>(new string[] { "Layouts", "Lifecycle" });
            TestDataUnit  unitData = testEntityFactory.AddUpdateUnit(0, helpdeskData.Response.HelpdeskID, "", "", false, topics);

            // Check that unit was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, unitData.Response.Status);
            Assert.IsTrue(unitData.Response.UnitID > 0);

            // Get topics for the unit that was just created.
            TopicsFacade topicsFacade = new TopicsFacade();
            GetTopicsByUnitIDResponse topicResponse = topicsFacade.GetTopicsByUnitID(unitData.Response.UnitID);

            // Check that there are two units in the response (Layouts, Lifecycle).
            Assert.IsTrue(topicResponse.Topics.Count() == 3);

            // Add test queue item, pass in topic [0].
            TestDataQueue queueData = testEntityFactory.AddQueueItem(null, topicResponse.Topics[0].TopicId);

            // Check that queue item was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, queueData.Response.Status);

            // Create request to alter queue item.
            var queueUpdateRequest = new UpdateQueueItemRequest
            {
                TopicID     = topicResponse.Topics[0].TopicId,
                Description = "UpdateQueueItem Test"
            };

            // Update the queue item
            UpdateQueueItemResponse updateQueueResponse = testEntityFactory.QueueFacade.UpdateQueueItem(queueData.Response.ItemId, queueUpdateRequest);

            // Check that queue item was updated successfully.
            Assert.AreEqual(HttpStatusCode.OK, updateQueueResponse.Status);

            // Do another request to change to another topic
            queueUpdateRequest = new UpdateQueueItemRequest
            {
                TopicID     = topicResponse.Topics[1].TopicId,
                Description = "UpdateQueueItem Test 2"
            };

            // Update the queue item again
            updateQueueResponse = testEntityFactory.QueueFacade.UpdateQueueItem(queueData.Response.ItemId, queueUpdateRequest);

            // Check that queue item was updated successfully.
            Assert.AreEqual(HttpStatusCode.OK, updateQueueResponse.Status);
        }
        public void UpdateQueueItemStatusInvalidTimeRemoved()
        {
            // Fill empty string parameters "" with auto-generated string.
            testEntityFactory.PopulateEmptyStrings = true;

            // Add test helpdesk.
            TestDataHelpdesk helpdeskData = testEntityFactory.AddHelpdesk();

            // Check that helpdesk was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, helpdeskData.Response.Status);
            Assert.IsTrue(helpdeskData.Response.HelpdeskID > 0);

            // Create a unit. ID provided is 0, which will indicates creation of new helpdesk.
            List <string> topics   = new List <string>(new string[] { "Layouts", "Lifecycle" });
            TestDataUnit  unitData = testEntityFactory.AddUpdateUnit(0, helpdeskData.Response.HelpdeskID, "", "", false, topics);

            // Check that unit was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, unitData.Response.Status);
            Assert.IsTrue(unitData.Response.UnitID > 0);

            // Get topics for the unit that was just created.
            TopicsFacade topicsFacade = new TopicsFacade();
            GetTopicsByUnitIDResponse topicResponse = topicsFacade.GetTopicsByUnitID(unitData.Response.UnitID);

            // Check that there are two units in the response (Layouts, Lifecycle).
            Assert.IsTrue(topicResponse.Topics.Count() == 3);

            // Add test queue item, pass in topic [0].
            TestDataQueue queueData = testEntityFactory.AddQueueItem(null, topicResponse.Topics[0].TopicId);

            // Check that queue item was created successfully.
            Assert.AreEqual(HttpStatusCode.OK, queueData.Response.Status);

            // Create update request for TimeHelped.
            var queueUpdateRequest = new UpdateQueueItemStatusRequest
            {
                TimeHelped  = DateTime.Now,
                TimeRemoved = null
            };

            // Update queue item TimeHelped.
            var queueUpdateResponse = testEntityFactory.QueueFacade.UpdateQueueItemStatus(queueData.Response.ItemId, queueUpdateRequest);

            // Check that queue item was updated successfully.
            Assert.AreEqual(HttpStatusCode.OK, queueData.Response.Status);
            Assert.IsTrue(queueUpdateResponse.Result == true);

            // Create update request for TimeRemoved.
            // NOTICE we're providing a TimedRemoved time that precedes TimeHelped. This should fail.
            DateTime timeRemoved = queueUpdateRequest.TimeHelped.Value.AddMinutes(-1);

            queueUpdateRequest = new UpdateQueueItemStatusRequest
            {
                TimeHelped  = null,
                TimeRemoved = timeRemoved
            };

            // Update queue item TimeRemoved.
            queueUpdateResponse = testEntityFactory.QueueFacade.UpdateQueueItemStatus(queueData.Response.ItemId, queueUpdateRequest);

            // Check that queue item was updated successfully.
            Assert.AreEqual(HttpStatusCode.BadRequest, queueUpdateResponse.Status);
            Assert.IsTrue(queueUpdateResponse.Result == false);
        }