public void SendsSchemaToEmailWhenProvided()
        {
            IWorkScheduleReader workScheduleReader = Substitute.For <IWorkScheduleReader>();

            workScheduleReader.Read().Returns(new WorkSchedule());

            IWorkScheduleReaderFactory workScheduleReaderFactory = Substitute.For <IWorkScheduleReaderFactory>();

            workScheduleReaderFactory.Create(Arg.Any <Stream>()).Returns(workScheduleReader);

            IWorkScheduleExporter workScheduleExporter = Substitute.For <IWorkScheduleExporter>();

            workScheduleExporter.Export(Arg.Any <WorkSchedule>()).Returns(new byte[0]);

            IWorkScheduleDeliveryService workScheduleDeliveryService = Substitute.For <IWorkScheduleDeliveryService>();

            WorkScheduleExportViewModel model = new WorkScheduleExportViewModel
            {
                Email      = "some-email@localhost",
                SchemaFile = new DummyFormFile()
            };

            controller = new HomeController(workScheduleReaderFactory, workScheduleExporter, workScheduleDeliveryService);

            IActionResult result = controller.Index(model);

            result.ShouldNotBeNull();
            result.ShouldBeOfType <ViewResult>();
            workScheduleDeliveryService.ReceivedWithAnyArgs(1).Deliver(null, null, null);
        }
        public void ReturnsICalendarFileWhenProvidingValidSchemaFile()
        {
            IWorkScheduleReader workScheduleReader = Substitute.For <IWorkScheduleReader>();

            workScheduleReader.Read().Returns(new WorkSchedule());

            IWorkScheduleReaderFactory workScheduleReaderFactory = Substitute.For <IWorkScheduleReaderFactory>();

            workScheduleReaderFactory.Create(Arg.Any <Stream>()).Returns(workScheduleReader);

            IWorkScheduleExporter workScheduleExporter = Substitute.For <IWorkScheduleExporter>();

            workScheduleExporter.Export(Arg.Any <WorkSchedule>()).Returns(new byte[0]);

            IWorkScheduleDeliveryService workScheduleDeliveryService = Substitute.For <IWorkScheduleDeliveryService>();

            WorkScheduleExportViewModel model = new WorkScheduleExportViewModel
            {
                SchemaFile = new DummyFormFile()
            };

            controller = new HomeController(workScheduleReaderFactory, workScheduleExporter, workScheduleDeliveryService);

            IActionResult result = controller.Index(model);

            result.ShouldNotBeNull();
            result.ShouldBeOfType <FileContentResult>();
        }
        public HomeControllerTests()
        {
            IWorkScheduleReaderFactory   workScheduleReaderFactory   = Substitute.For <IWorkScheduleReaderFactory>();
            IWorkScheduleExporter        workScheduleExporter        = Substitute.For <IWorkScheduleExporter>();
            IWorkScheduleDeliveryService workScheduleDeliveryService = Substitute.For <IWorkScheduleDeliveryService>();

            controller = new HomeController(workScheduleReaderFactory, workScheduleExporter, workScheduleDeliveryService);
        }
Example #4
0
        public HomeController(IWorkScheduleReaderFactory workScheduleReaderFactory, IWorkScheduleExporter workScheduleExporter, IWorkScheduleDeliveryService deliveryService)
        {
            if (workScheduleReaderFactory == null)
            {
                throw new ArgumentNullException(nameof(workScheduleReaderFactory));
            }

            if (workScheduleExporter == null)
            {
                throw new ArgumentNullException(nameof(workScheduleExporter));
            }

            if (deliveryService == null)
            {
                throw new ArgumentNullException(nameof(deliveryService));
            }

            this.workScheduleReaderFactory = workScheduleReaderFactory;
            this.workScheduleExporter      = workScheduleExporter;
            this.deliveryService           = deliveryService;
        }