public void DashboardHandlerScheduleSave()
        {
            var record = new ScheduleRecord()
            {
                ApplicationName = BlueCollarSection.Section.ApplicationName,
                Id = 0,
                Name = "Nightly",
                QueueName = "schedules",
                RepeatType = ScheduleRepeatType.Days,
                RepeatValue = 1,
                StartOn = new DateTime(2011, 1, 1, 0, 0, 0, DateTimeKind.Utc)
            };

            var transaction = new Mock<IDbTransaction>();

            var repository = new Mock<IRepository>();
            repository.Setup(r => r.BeginTransaction()).Returns(transaction.Object);
            repository.Setup(r => r.UpdateSchedule(It.IsAny<ScheduleRecord>(), It.IsAny<IDbTransaction>())).Returns(record);
            repository
                .Setup(r => r.CreateSchedule(It.IsAny<ScheduleRecord>(), It.IsAny<IDbTransaction>()))
                .Returns(record)
                .Callback(() =>
                {
                    record.Id = new Random().Next(1, 1000);
                });

            var factory = new Mock<IRepositoryFactory>();
            factory.Setup(f => f.Create()).Returns(repository.Object);

            using (SaveScheduleHandler handler = new SaveScheduleHandler(factory.Object))
            {
                handler.ApplicationName = BlueCollarSection.Section.ApplicationName;
                handler.HandlerRelativeRequestUrl = "~/schedules";
                handler.QueryString = new QueryString();

                string output;

                using (MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(record))))
                {
                    using (MemoryStream outputStream = new MemoryStream())
                    {
                        var context = MockHttpContext("POST", "/schedules", inputStream, outputStream);
                        handler.ProcessRequest(context.Object);

                        outputStream.Position = 0;
                        output = Encoding.UTF8.GetString(outputStream.ToArray());
                    }
                }

                Assert.IsNotNull(output);
                Assert.IsTrue(output.Length > 0);

                var outputRecord = JsonConvert.DeserializeAnonymousType(output, new { Id = 0 });
                Assert.IsNotNull(outputRecord);
                Assert.AreEqual(record.Id, outputRecord.Id);

                using (MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(record))))
                {
                    using (MemoryStream outputStream = new MemoryStream())
                    {
                        var context = MockHttpContext("PUT", "/schedules", inputStream, outputStream);
                        handler.ProcessRequest(context.Object);

                        outputStream.Position = 0;
                        output = Encoding.UTF8.GetString(outputStream.ToArray());
                    }
                }

                Assert.IsNotNull(output);
                Assert.IsTrue(output.Length > 0);

                outputRecord = JsonConvert.DeserializeAnonymousType(output, new { Id = 0 });
                Assert.IsNotNull(outputRecord);
                Assert.AreEqual(record.Id, outputRecord.Id);
            }
        }
Exemple #2
0
 private void OnSaveScheduleHandler(object obj)
 {
     SaveScheduleHandler?.Invoke(obj);
 }
Exemple #3
0
        public void DashboardHandlerScheduleSave()
        {
            var record = new ScheduleRecord()
            {
                ApplicationName = BlueCollarSection.Section.ApplicationName,
                Id          = 0,
                Name        = "Nightly",
                QueueName   = "schedules",
                RepeatType  = ScheduleRepeatType.Days,
                RepeatValue = 1,
                StartOn     = new DateTime(2011, 1, 1, 0, 0, 0, DateTimeKind.Utc)
            };

            var transaction = new Mock <IDbTransaction>();

            var repository = new Mock <IRepository>();

            repository.Setup(r => r.BeginTransaction()).Returns(transaction.Object);
            repository.Setup(r => r.UpdateSchedule(It.IsAny <ScheduleRecord>(), It.IsAny <IDbTransaction>())).Returns(record);
            repository
            .Setup(r => r.CreateSchedule(It.IsAny <ScheduleRecord>(), It.IsAny <IDbTransaction>()))
            .Returns(record)
            .Callback(() =>
            {
                record.Id = new Random().Next(1, 1000);
            });

            var factory = new Mock <IRepositoryFactory>();

            factory.Setup(f => f.Create()).Returns(repository.Object);

            using (SaveScheduleHandler handler = new SaveScheduleHandler(factory.Object))
            {
                handler.ApplicationName           = BlueCollarSection.Section.ApplicationName;
                handler.HandlerRelativeRequestUrl = "~/schedules";
                handler.QueryString = new QueryString();

                string output;

                using (MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(record))))
                {
                    using (MemoryStream outputStream = new MemoryStream())
                    {
                        var context = MockHttpContext("POST", "/schedules", inputStream, outputStream);
                        handler.ProcessRequest(context.Object);

                        outputStream.Position = 0;
                        output = Encoding.UTF8.GetString(outputStream.ToArray());
                    }
                }

                Assert.IsNotNull(output);
                Assert.IsTrue(output.Length > 0);

                var outputRecord = JsonConvert.DeserializeAnonymousType(output, new { Id = 0 });
                Assert.IsNotNull(outputRecord);
                Assert.AreEqual(record.Id, outputRecord.Id);

                using (MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(record))))
                {
                    using (MemoryStream outputStream = new MemoryStream())
                    {
                        var context = MockHttpContext("PUT", "/schedules", inputStream, outputStream);
                        handler.ProcessRequest(context.Object);

                        outputStream.Position = 0;
                        output = Encoding.UTF8.GetString(outputStream.ToArray());
                    }
                }

                Assert.IsNotNull(output);
                Assert.IsTrue(output.Length > 0);

                outputRecord = JsonConvert.DeserializeAnonymousType(output, new { Id = 0 });
                Assert.IsNotNull(outputRecord);
                Assert.AreEqual(record.Id, outputRecord.Id);
            }
        }