protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureTestServices(services =>
            {
                Mock <IRegistrationNotifier> registrationNotifier = new Mock <IRegistrationNotifier>();
                string connectionString      = CreateConnectionStringFromEnvironment();
                var patientAccountRepository = new PatientAccountSqlRepository(new UserSqlTestContextFactory(connectionString));

                var patientAccountService      = new PatientAccountService(patientAccountRepository);
                var patientRegistrationService = new PatientRegistrationService(patientAccountService, registrationNotifier.Object);

                services.Add(new ServiceDescriptor(typeof(IPatientRegistrationService), patientRegistrationService));
            });
        }
        private void AddServices(IServiceCollection services)
        {
            var cityRepository = new CitySqlRepository(GetContextFactory());
            var cityService    = new CityService(cityRepository);

            services.Add(new ServiceDescriptor(typeof(CityService), cityService));

            var countryRepository = new CountrySqlRepository(GetContextFactory());
            var countryService    = new CountryService(countryRepository);

            services.Add(new ServiceDescriptor(typeof(CountryService), countryService));

            var doctorRepositry = new DoctorSqlRepository(GetContextFactory());
            var doctorService   = new DoctorService(doctorRepositry);

            services.Add(new ServiceDescriptor(typeof(DoctorService), doctorService));

            var patientRepository        = new PatientSqlRepository(GetContextFactory());
            var patientAccountRepository = new PatientAccountSqlRepository(GetContextFactory());
            var registrationNotifier     = new RegistrationNotifier(
                "http://" +
                Environment.GetEnvironmentVariable("PSW_API_GATEWAY_HOST") +
                ":" +
                Environment.GetEnvironmentVariable("PSW_API_GATEWAY_PORT") +
                "/api/patient/activate/");

            var patientAccountService      = new PatientAccountService(patientAccountRepository);
            var patientRegistrationService = new PatientRegistrationService(patientAccountService, registrationNotifier);

            var patientService = new PatientService(patientRepository, patientAccountRepository);

            var specialtyRepository = new SpecialtySqlRepository(GetContextFactory());
            var specialtyService    = new SpecialtyService(specialtyRepository);

            // Auth
            var userAccountRepository = new UserAccountSqlRepository(GetContextFactory());
            var credentialService     = new CredentialsService(userAccountRepository, GetJwtSecretFromEnvironment());

            // Advertisement
            var advertisementRepository = new AdvertisementSqlRepository(GetContextFactory());
            var advertisementService    = new AdvertisementService(advertisementRepository);

            services.Add(new ServiceDescriptor(typeof(CredentialsService), credentialService));
            services.Add(new ServiceDescriptor(typeof(IPatientAccountService), patientAccountService));
            services.Add(new ServiceDescriptor(typeof(IPatientRegistrationService), patientRegistrationService));
            services.Add(new ServiceDescriptor(typeof(PatientService), patientService));
            services.Add(new ServiceDescriptor(typeof(SpecialtyService), specialtyService));
            services.Add(new ServiceDescriptor(typeof(AdvertisementService), advertisementService));
        }
        public void PersistPatient()
        {
            // Arrange
            var client            = new Client();
            var patient           = new Patient(client);
            var patientRepository = Mock.Create <IPatientRepository>(Behavior.Strict);

            Mock.Arrange(() => patientRepository.CreateOrUpdate(patient)).OccursOnce();
            var service = new PatientRegistrationService(patientRepository);

            // Act
            service.RegisterPatient(patient);

            // Assert
            Mock.Assert(patientRepository);
        }
Example #4
0
        public void Sends_notification_when_creating_patient()
        {
            var          mockNotifier = new Mock <IRegistrationNotifier>();
            var          mockPatientAccountService = new Mock <IPatientAccountService>();
            var          guid              = Guid.NewGuid();
            const string email             = "*****@*****.**";
            const string emailTemplatePath = "/path/to/the/resource";
            var          patientAccount    = CreatePatientAccount(guid, email);

            mockPatientAccountService.Setup(pa => pa.CreateAccount(patientAccount)).Returns(patientAccount);
            var patientRegistrationService
                = new PatientRegistrationService(mockPatientAccountService.Object, mockNotifier.Object);

            patientRegistrationService.RegisterPatient(patientAccount, emailTemplatePath);

            mockNotifier.Verify(n =>
                                n.SendActivationEmail(patientAccount, "/path/to/the/resource"));
        }
        public void RaiseNewPatientCreatedEvent()
        {
            // Arrange
            var client            = new Client();
            var patient           = new Patient(client);
            var patientRepository = Mock.Create <IPatientRepository>();

            Mock.Arrange(() => patientRepository.CreateOrUpdate(patient));
            var     service = new PatientRegistrationService(patientRepository);
            Patient patientReturnedFromEvent = null;

            service.NewPatientCreated += (o, e) =>
            {
                patientReturnedFromEvent = e.Patient;
            };

            // Act
            service.RegisterPatient(patient);

            // Assert
            Assert.IsNotNull(patientReturnedFromEvent);
        }
 public PatientRegistrationController()
 {
     patientRegistrationService = new PatientRegistrationService();
 }