private HttpResponseMessage SendGetChannelsRequest(int channelId, IMessagesData data)
        {
            var model = new SearchChannelsBindingModel { ChannelId = channelId };

            var controller = new ChannelsController(data);
            this.SetupController(controller);

            var response = controller.GetChannelById(model)
                .ExecuteAsync(CancellationToken.None).Result;
            return response;
        }
        public void GetChannelById_NonExistingChannel_ShouldReturn404NotFound()
        {
            // Arrange -> create a few channels
            var dataLayerMock = new MessagesDataMock();
            var channelsMock = dataLayerMock.Channels;
            channelsMock.Add(new Channel() { Id = 1, Name = "Channel #1" });
            channelsMock.Add(new Channel() { Id = 2, Name = "Channel #2" });
            channelsMock.Add(new Channel() { Id = 3, Name = "Channel #3" });

            // Act -> Get channel by ID
            var channelsController = new ChannelsController(dataLayerMock);
            this.SetupControllerForTesting(channelsController, "channels");
            var httpResponse = channelsController.GetChannelById(20)
                .ExecuteAsync(new CancellationToken()).Result;

            // Assert -> HTTP status code 404 (Not Found)
            Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode);
        }
        public void GetChannelById_ExistingChannel_ShouldReturn200OK_CorrectChannelData()
        {
            // Arrange -> create a few channels
            var dataLayerMock = new MessagesDataMock();
            var channelsMock = dataLayerMock.Channels;
            channelsMock.Add(new Channel() { Id = 1, Name = "Channel #1" });
            channelsMock.Add(new Channel() { Id = 2, Name = "Channel #2" });
            channelsMock.Add(new Channel() { Id = 3, Name = "Channel #3" });

            // Act -> Get channel by ID
            var channelsController = new ChannelsController(dataLayerMock);
            this.SetupControllerForTesting(channelsController, "channels");
            var httpResponse = channelsController.GetChannelById(2)
                .ExecuteAsync(new CancellationToken()).Result;

            // Assert -> HTTP status code 200 (OK) + correct channel data
            Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode);
            var channel2 = httpResponse.Content.ReadAsAsync<ChannelModel>().Result;
            Assert.AreEqual(2, channel2.Id);
            Assert.AreEqual("Channel #2", channel2.Name);
        }