Exemplo n.º 1
0
        public void HangfireServer_Program_ConnectionString_Exists()
        {
            var args = new Args
            {
                ShowConsole = true,
            };

            var implConfig = SetupHangfireImplementationConfigs(out var mockWriter, out var mockPauseHelper, out var mockExecutionLogPublisher);

            var dbSource = new DbSource
            {
                ConnectionString = "connectionString",
            };
            var compressedExecuteMessage = new CompressedExecuteMessage();
            var serializeToJsonString    = dbSource.SerializeToJsonString(new DefaultSerializationBinder());

            compressedExecuteMessage.SetMessage(serializeToJsonString);

            var mockSerializer = new Mock <IBuilderSerializer>();

            var mockFile            = new Mock <IFile>();
            var mockDirectory       = new Mock <IDirectory>();
            var persistenceSettings = new PersistenceSettings("some path", mockFile.Object, mockDirectory.Object)
            {
                Enable = false,
                PersistenceDataSource = new NamedGuidWithEncryptedPayload
                {
                    Name = "Data Source", Value = Guid.Empty, Payload = serializeToJsonString
                },
            };

            mockSerializer.Setup(o => o.Deserialize <DbSource>(persistenceSettings.PersistenceDataSource.Payload)).Returns(dbSource).Verifiable();
            var mockContext = new HangfireContext(args);

            var mockEventWaitHandle = new Mock <IEventWaitHandle>();

            mockEventWaitHandle.Setup(o => o.New()).Verifiable();
            mockEventWaitHandle.Setup(o => o.WaitOne()).Verifiable();

            var item = new Implementation(mockContext, implConfig, persistenceSettings, mockSerializer.Object, mockEventWaitHandle.Object);

            item.Run();

            mockWriter.Verify(o => o.WriteLine("Starting Hangfire server..."), Times.Once);
            mockExecutionLogPublisher.Verify(o => o.Info("Starting Hangfire server..."), Times.Once);
            mockSerializer.Verify(o => o.Deserialize <DbSource>(persistenceSettings.PersistenceDataSource.Payload), Times.Once);
            mockWriter.Verify(o => o.WriteLine("Hangfire dashboard started..."), Times.Once);
            mockExecutionLogPublisher.Verify(o => o.Info("Hangfire dashboard started..."), Times.Once);
            mockWriter.Verify(o => o.WriteLine("Hangfire server started..."), Times.Once);
            mockExecutionLogPublisher.Verify(o => o.Info("Hangfire server started..."), Times.Once);
            mockPauseHelper.Verify(o => o.Pause(), Times.Never);

            mockEventWaitHandle.Verify(o => o.New(), Times.Never);
            mockEventWaitHandle.Verify(o => o.WaitOne(), Times.Never);
        }