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); } }
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); } }