public string GetSubscription_GivenSubInfoFileContentsAndSubscriptionTypeAndRenderFormat_ShouldReturnExpectedReportSubscriptionWithRenderFormat(string subscriptionType, string renderFormat)
        {
            ReportSubscription result;

            if (subscriptionType == "Email")
            {
                mockEmailSubInfoContents.Remove("subscriptionRenderFormat,CSV");
                if (!string.IsNullOrEmpty(renderFormat))
                {
                    mockEmailSubInfoContents.Add($"subscriptionRenderFormat,{renderFormat}");
                }

                result = SubscriptionInfoFileLoader.GetSubscription(mockEmailSubInfoContents.ToArray(), "D:/MockPath", "TestSubscription");
            }
            else
            {
                mockFileShareSubInfoContents.Remove("subscriptionRenderFormat,CSV");
                if (!string.IsNullOrEmpty(renderFormat))
                {
                    mockFileShareSubInfoContents.Add($"subscriptionRenderFormat,{renderFormat}");
                }

                result = SubscriptionInfoFileLoader.GetSubscription(mockFileShareSubInfoContents.ToArray(), "D:/MockPath", "TestSubscription");
            }

            return(result.ExtensionSettings.ParameterValues
                   .Select(p1 => (ParameterValue)p1)
                   .FirstOrDefault(p2 => subscriptionType == "FileShare" && p2.Name == "RENDER_FORMAT" ||
                                   subscriptionType == "Email" && p2.Name == "RenderFormat")
                   ?.Value);
        }
        public void GetSubscription_GivenSubInfoFileContentsOfFileShareSubscriptionType_ShouldReturnExpectedReportSubscription()
        {
            var result = SubscriptionInfoFileLoader.GetSubscription(mockFileShareSubInfoContents.ToArray(), "D:/MockPath", "TestSubscription");

            var expectedParameterString = @"PATH: \\ftpShare\Reporting" +
                                          @"FILENAME: Test_Report_@timestamp" +
                                          @"FILEEXTN: True" +
                                          @"USERNAME: ftpUserName" +
                                          @"PASSWORD: IMAPASSWORD" +
                                          @"RENDER_FORMAT: CSV" +
                                          @"WRITEMODE: Overwrite";

            Assert.AreEqual(expectedParameterString, ParameterValueOrFieldReferencesToString(result.ExtensionSettings.ParameterValues));
            Assert.AreEqual("daterangetype: month", ParameterValueToString(result.Parameters));
            Assert.AreEqual(true, result.Enabled);
            Assert.AreEqual("TestSubscription", result.Name);
            Assert.AreEqual("D:/MockPath", result.Path);
            Assert.AreEqual("TestSubscription - Subscription", result.Description);
            Assert.AreEqual("TimedSubscription", result.EventType);
            Assert.AreEqual("<ScheduleDefinition xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><StartDateTime xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer\">2012-12-11T05:45:00.000+00:00</StartDateTime><MonthlyRecurrence xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer\"><Days>1</Days><MonthsOfYear><January>true</January><February>true</February><March>true</March><April>true</April><May>true</May><June>true</June><July>true</July><August>true</August><September>true</September><October>true</October><November>true</November><December>true</December></MonthsOfYear></MonthlyRecurrence></ScheduleDefinition>", result.ScheduleXml);
        }
        public void GetSubscription_GivenSubInfoFileContentsOfEmailSubscriptionType_ShouldReturnExpectedReportSubscription()
        {
            var result = SubscriptionInfoFileLoader.GetSubscription(mockEmailSubInfoContents.ToArray(), "D:/MockPath", "TestSubscription");

            var expectedParameterString = "TO: [email protected]" +
                                          "CC: " +
                                          "BCC: [email protected]" +
                                          "ReplyTo: [email protected]" +
                                          "IncludeReport: True" +
                                          "RenderFormat: EXCEL" +
                                          "Subject: Test Report - @ReportName executed at @ExecutionTime" +
                                          "Comment: Your report is attached" +
                                          "IncludeLink: False" +
                                          "Priority: NORMAL";

            Assert.AreEqual(expectedParameterString, ParameterValueOrFieldReferencesToString(result.ExtensionSettings.ParameterValues));
            Assert.AreEqual("daterangetype: month", ParameterValueToString(result.Parameters));
            Assert.AreEqual(true, result.Enabled);
            Assert.AreEqual("TestSubscription", result.Name);
            Assert.AreEqual("D:/MockPath", result.Path);
            Assert.AreEqual("TestSubscription - Subscription", result.Description);
            Assert.AreEqual("TimedSubscription", result.EventType);
            Assert.AreEqual("<ScheduleDefinition xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><StartDateTime xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer\">2012-12-11T05:45:00.000+00:00</StartDateTime><MonthlyRecurrence xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer\"><Days>1</Days><MonthsOfYear><January>true</January><February>true</February><March>true</March><April>true</April><May>true</May><June>true</June><July>true</July><August>true</August><September>true</September><October>true</October><November>true</November><December>true</December></MonthsOfYear></MonthlyRecurrence></ScheduleDefinition>", result.ScheduleXml);
        }