public void ServiceSunsetCalculator_ImplementISunsetCalculator()
        {
            // Arrange
            ServiceSunsetCalculator calculator = new ServiceSunsetCalculator();

            // Assert
            Assert.IsAssignableFrom <ISunsetCalculator>(calculator);
        }
        public void ParseJsonSunsetValue_OnGoodData_ReturnExpectedString()
        {
            // Arrange
            string expected = "4:42:49 PM";

            // Act
            string actual = ServiceSunsetCalculator.ParseSunset(successData);

            // Assert
            Assert.Equal(expected, actual);
        }
        public void ToLocalTime_OnValidValue_ReturnsExpectedDateTime()
        {
            // Arrange
            string   timeString = "4:42:49 PM";
            DateTime inputDate  = new DateTime(2016, 11, 30);
            DateTime expected   = new DateTime(2016, 11, 30, 16, 42, 49);

            // Act
            DateTime actual = ServiceSunsetCalculator.ToLocalTime(timeString, inputDate);

            // Assert
            Assert.Equal(expected, actual);
        }
        public void ParseJsonSunsetValue_OnBadData_ThrowArgumentxception()
        {
            try
            {
                // Act
                string actual = ServiceSunsetCalculator.ParseSunset(errorData);

                // Assert
                Assert.True(false, "ArgumentException was not thrown");
            }
            catch (ArgumentException)
            {
                // Assert
                Assert.True(true);
            }
        }
        public void GetSunset_OnValidDate_ReturnsExpectedDateTime()
        {
            // Arrange
            var serviceMoq = new Mock <ISolarService>();

            serviceMoq
            .Setup(s => s.GetServiceData(It.IsAny <DateTime>()))
            .Returns(successData);
            ServiceSunsetCalculator calculator = new ServiceSunsetCalculator();

            calculator.Service = serviceMoq.Object;
            DateTime inputDate        = new DateTime(2016, 11, 30);
            DateTime expectedDateTime = new DateTime(2016, 11, 30, 16, 42, 49);

            // Act
            DateTime actualDateTime = calculator.GetSunset(inputDate);

            // Assert
            Assert.Equal(expectedDateTime, actualDateTime);
        }