public void SendPdfCreatorStatistics_UsageStatsMetricHoldsProperValues()
        {
            var job      = BuildJob();
            var duration = TimeSpan.MaxValue;
            var status   = "test status";
            PdfCreatorUsageStatisticsMetric metric = new PdfCreatorUsageStatisticsMetric();

            _settingsProvider.Settings.ApplicationSettings.UsageStatistics.Enable = true;
            _gpoSettings.DisableUsageStatistics.Returns(false);

            _threadManager.When(x => x.StartSynchronizedThread(Arg.Any <ISynchronizedThread>()))
            .Do(info =>
            {
                var t = info.Arg <ISynchronizedThread>();
                t.Start();
                t.Join();
            });

            _usageStatisticsSender.When(sender => sender.Send(Arg.Any <IUsageMetric>())).Do(info =>
            {
                metric = info.Arg <PdfCreatorUsageStatisticsMetric>();
            });

            _pdfCreatorUsageStatisticsManager.SendUsageStatistics(duration, job, status);

            Assert.AreEqual(_machineIdGenerator.GetMachineId(), metric.MachineId);
            Assert.AreEqual(OutputFormat.Pdf.ToString(), metric.OutputFormat);
            Assert.AreEqual(Mode.AutoSave, metric.Mode);
            Assert.AreEqual(job.Profile.ShowQuickActions, metric.QuickActions);

            Assert.AreEqual(job.Profile.OpenViewer, metric.OpenViewer);
            Assert.AreEqual(job.Profile.OpenWithPdfArchitect, metric.OpenWithPdfArchitect);
            Assert.AreEqual(job.JobInfo.TotalPages, metric.TotalPages);
            Assert.AreEqual(job.NumberOfCopies, metric.NumberOfCopies);

            Assert.AreEqual(_versionHelper.ApplicationVersion.ToString(), metric.Version);
            Assert.AreEqual((long)duration.TotalMilliseconds, metric.Duration);

            Assert.AreEqual(job.Profile.DropboxSettings.Enabled, metric.Dropbox);
            Assert.AreEqual(job.Profile.Ftp.Enabled, metric.Ftp);
            Assert.AreEqual(job.Profile.EmailSmtpSettings.Enabled, metric.Smtp);
            Assert.AreEqual(job.Profile.EmailClientSettings.Enabled, metric.Mailclient);
            Assert.AreEqual(job.Profile.HttpSettings.Enabled, metric.Http);
            Assert.AreEqual(job.Profile.Printing.Enabled, metric.Print);

            Assert.AreEqual(job.Profile.CoverPage.Enabled, metric.Cover);
            Assert.AreEqual(job.Profile.BackgroundPage.Enabled, metric.Background);
            Assert.AreEqual(job.Profile.AttachmentPage.Enabled, metric.Attachment);
            Assert.AreEqual(job.Profile.Stamping.Enabled, metric.Stamp);

            Assert.AreEqual(job.Profile.PdfSettings.Security.Enabled, metric.Encryption);
            Assert.AreEqual(job.Profile.PdfSettings.Signature.Enabled, metric.Signature);
            Assert.AreEqual(job.Profile.Scripting.Enabled, metric.Script);
            Assert.AreEqual(job.Profile.CustomScript.Enabled, metric.CustomScript);
            Assert.AreEqual(job.Profile.UserTokens.Enabled, metric.UserToken);

            Assert.AreEqual(status, metric.Status);
        }
        private string GetJobSampleData()
        {
            var metric = new PdfCreatorUsageStatisticsMetric()
            {
                MachineId            = "sample machineId",
                Product              = base.ApplicationName,
                Version              = base.VersionHelper?.ApplicationVersion?.ToString(),
                OperatingSystem      = base.OsHelper.GetWindowsVersion(),
                Duration             = TimeSpan.Zero.Milliseconds,
                OutputFormat         = OutputFormat.Pdf.ToString(),
                Mode                 = Mode.Interactive,
                QuickActions         = true,
                OpenViewer           = true,
                OpenWithPdfArchitect = true,
                Status               = "Success",
                Attachment           = true,
                Background           = true,
                Dropbox              = true,
                Cover                = true,
                NumberOfCopies       = 1,
                Script               = true,
                CustomScript         = true,
                TotalPages           = 1,
                Mailclient           = true,
                Print                = true,
                Signature            = true,
                Encryption           = true,
                UserToken            = true,
                Ftp   = true,
                Http  = true,
                Smtp  = true,
                Stamp = true
            };

            return(ConvertToJson(metric));
        }