public async Task CreateRequestShouldReturnNotNullTest()
        {
            var dbContext = ApplicationDbContextInMemoryFactory.InitializeContext();

            var requestRepository             = new EfDeletableEntityRepository <Request>(dbContext);
            var hospitalDataRequestRepository = new EfDeletableEntityRepository <HospitalDataRequest>(dbContext);
            var hospitalDataRepository        = new EfDeletableEntityRepository <HospitalData>(dbContext);
            var recipientReques    = new EfDeletableEntityRepository <RecipientRequest>(dbContext);
            var locationRepository = new EfDeletableEntityRepository <Location>(dbContext);

            var service = new RequestsService(
                requestRepository,
                hospitalDataRequestRepository,
                hospitalDataRepository,
                recipientReques,
                locationRepository);

            // Seeding user
            var user = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
            };

            dbContext.Users.Add(user);

            // Seeding hospital
            var hospital = new HospitalData
            {
                ApplicationUserId = user.Id,
                Name    = "HospitalName",
                Contact = new Contact
                {
                    Phone = "123456789",
                    Email = "*****@*****.**",
                },
                Location = new Location
                {
                    Country           = "Bulgaria",
                    City              = "Sofia",
                    AdressDescription = "Sofia",
                },
            };

            dbContext.HospitalData.Add(hospital);

            await dbContext.SaveChangesAsync();

            await service.CreateRequestAsync(hospital.ApplicationUserId, "...", DateTime.UtcNow, EmergencyStatus.WithinDay, BloodGroup.A, RhesusFactor.Negative, 500);

            var result = requestRepository
                         .All()
                         .Where(r => r.NeededQuantity == 500)
                         .FirstOrDefault();

            Assert.NotNull(result);
        }
        public async Task CreateRequestShouldThrowExceptionIfInvalidDataIsPassTest()
        {
            var dbContext = ApplicationDbContextInMemoryFactory.InitializeContext();

            var requestRepository             = new EfDeletableEntityRepository <Request>(dbContext);
            var hospitalDataRequestRepository = new EfDeletableEntityRepository <HospitalDataRequest>(dbContext);
            var hospitalDataRepository        = new EfDeletableEntityRepository <HospitalData>(dbContext);
            var recipientReques    = new EfDeletableEntityRepository <RecipientRequest>(dbContext);
            var locationRepository = new EfDeletableEntityRepository <Location>(dbContext);

            var service = new RequestsService(
                requestRepository,
                hospitalDataRequestRepository,
                hospitalDataRepository,
                recipientReques,
                locationRepository);

            // Seeding user
            var user = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
            };

            dbContext.Users.Add(user);

            // Seeding hospital
            var hospital = new HospitalData
            {
                ApplicationUserId = user.Id,
                Name    = "HospitalName",
                Contact = new Contact
                {
                    Phone = "123456789",
                    Email = "*****@*****.**",
                },
                Location = new Location
                {
                    Country           = "Bulgaria",
                    City              = "Sofia",
                    AdressDescription = "Sofia",
                },
            };

            dbContext.HospitalData.Add(hospital);

            await dbContext.SaveChangesAsync();

            await Assert.ThrowsAsync <ArgumentException>(() => service.CreateRequestAsync(hospital.ApplicationUserId, "content...", DateTime.UtcNow, EmergencyStatus.WithinDay, BloodGroup.A, RhesusFactor.Negative, 0));
        }
        public async Task CreateRequestShouldthrowExceptionDueToNullHospitalDataTest()
        {
            var dbContext = ApplicationDbContextInMemoryFactory.InitializeContext();

            var requestRepository             = new EfDeletableEntityRepository <Request>(dbContext);
            var hospitalDataRequestRepository = new EfDeletableEntityRepository <HospitalDataRequest>(dbContext);
            var hospitalDataRepository        = new EfDeletableEntityRepository <HospitalData>(dbContext);
            var recipientReques    = new EfDeletableEntityRepository <RecipientRequest>(dbContext);
            var locationRepository = new EfDeletableEntityRepository <Location>(dbContext);

            var service = new RequestsService(
                requestRepository,
                hospitalDataRequestRepository,
                hospitalDataRepository,
                recipientReques,
                locationRepository);

            await Assert.ThrowsAsync <ArgumentException>(() => service.CreateRequestAsync("1", "...", DateTime.UtcNow, EmergencyStatus.WithinDay, BloodGroup.A, RhesusFactor.Negative, 500));
        }