Beispiel #1
0
        [Fact] // async Task<IEnumerable<OwnerTransactionListOfRentalsServiceModel>> GetTransactionRentalsAsync(string userId)
        public async void GetTransactionRentalsAsync_ForGivenOwnerId_ShouldReturnListOfRentalsForSelectList()
        {
            // Arrange
            var ownerId        = Guid.NewGuid().ToString();
            var anotherOwnerId = Guid.NewGuid().ToString();
            var country        = CountryCreator.Create();
            var city           = CityCreator.Create(country.Id);

            var home1 = HomeCreator.CreateOwnerHome(ownerId, city.Id);
            var home2 = HomeCreator.CreateManagedHome(ownerId, city.Id);
            var home3 = HomeCreator.CreateManagedHome(ownerId, city.Id);
            var home4 = HomeCreator.CreateManagedHome(anotherOwnerId, city.Id);

            var user1 = UserCreator.Create("Debelin", "Butov", "but4eto", "*****@*****.**");
            var user2 = UserCreator.Create("Shunko", "Shpekov", "shpeka", "*****@*****.**");
            var user3 = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**");

            int id1 = 1;
            int id2 = 2;
            int id3 = 3;
            int id4 = 4;

            var contract1 = ContractCreator.CreateRentalContract(id1);
            var contract2 = ContractCreator.CreateRentalContract(id2);
            var contract3 = ContractCreator.CreateRentalContract(id3);
            var contract4 = ContractCreator.CreateRentalContract(id4);

            var rental1 = RentalCreator.Create(id1, country, city, user1, home1, contract1);
            var rental2 = RentalCreator.Create(id2, country, city, user2, home2, contract2);
            var rental3 = RentalCreator.Create(id3, country, city, user3, home3, contract3);
            var rental4 = RentalCreator.Create(id4, country, city, user3, home4, contract4);

            await this.Context.Countries.AddAsync(country);

            await this.Context.Cities.AddAsync(city);

            await this.Context.Homes.AddRangeAsync(home1, home2, home3, home4);

            await this.Context.Users.AddRangeAsync(user1, user2, user3);

            await this.Context.Rentals.AddRangeAsync(rental1, rental2, rental3, rental4);

            await this.Context.Contracts.AddRangeAsync(contract1, contract2, contract3, contract4);

            await this.Context.SaveChangesAsync();

            var service = new OwnerRentalService(this.Context, null, null, null, null);

            // Act
            var result        = (await service.GetTransactionRentalsAsync(ownerId)).ToList();
            var expectedCount = this.Context.Rentals
                                .Where(r => r.Home.OwnerId == ownerId)
                                .Count();

            // Assert
            result.Should().AllBeOfType <OwnerTransactionListOfRentalsServiceModel>();
            result.Should().HaveCount(expectedCount);
            result.Should().HaveCount(3);
        }
Beispiel #2
0
        [Fact] // async Task<bool> StartRent(string id, byte[] fileContent)
        public async void StartRent_ForGivenOwnerId_ShouldSuccessfullyInitiateRentAndReturnTrue()
        {
            // Arrange
            var country = CountryCreator.Create();
            var city    = CityCreator.Create(country.Id);
            var home    = HomeCreator.CreateAny(city.Id);
            var image   = ImageCreator.CreateForModel();

            await this.Context.Countries.AddAsync(country);

            await this.Context.Cities.AddAsync(city);

            await this.Context.Homes.AddAsync(home);

            await this.Context.CloudImages.AddAsync(image);

            var request = RequestCreator.Create(home);

            await this.Context.Requests.AddAsync(request);

            await this.Context.SaveChangesAsync();

            var approvedRequest = RequestCreator.CreateRentApproved(home, request.User, request.Id);

            var user = request.User;

            this.UserManager
            .Setup(u => u.FindByIdAsync(user.Id))
            .Returns(Task.FromResult(user));
            await this.UserManager.Object
            .AddToRoleAsync(user, "Tenant");

            var requestService = new Mock <IOwnerRequestService>();

            requestService
            .Setup(x => x.ApproveRequestAsync(request.Id))
            .Returns(Task.FromResult(approvedRequest));

            var listingService = new Mock <IOwnerListingService>();

            listingService
            .Setup(x => x.ChangeHomeStatusAsync(approvedRequest))
            .Returns(Task.FromResult(approvedRequest.HomeId));

            var rental = new Rental
            {
                Id       = 1,
                RentDate = DateTime.UtcNow,
                HomeId   = home.Id,
                TenantId = user.Id,
            };

            var rentalServiceMock = new Mock <IOwnerRentalService>();

            rentalServiceMock.Setup(y => y.CreateRental(home.Id, user.Id))
            .Returns(Task.FromResult(rental));

            var contractService = new Mock <IOwnerContractService>();

            contractService
            .Setup(x => x.CreateRentalContractAsync(new byte[1024], request.User, rental))
            .Returns(Task.FromResult(true));

            var service = new OwnerRentalService(this.Context, requestService.Object, listingService.Object, contractService.Object, this.UserManager.Object);

            // Act
            var result = await service.StartRent(request.Id, new byte[1024]);

            var rentalInfo = await this.Context.Rentals.Where(r => r.Home.Id == home.Id).FirstOrDefaultAsync();

            var changedUser = await this.Context.Users.Where(u => u.Id == user.Id).FirstOrDefaultAsync();

            // Assert
            result.Should().BeTrue();
            rentalInfo.TenantId.Should().Equals(user.Id);
            changedUser.Rentals.Count().Should().Be(1);
        }
Beispiel #3
0
        [Fact] // async Task<IEnumerable<OwnerIndexRentalServiceModel>> GetRentalsAsync(string userId)
        public async void GetRentalsAsync_ForGivenOwnerId_ShouldReturnModelOfAllRentedHomes()
        {
            // Arrange
            var ownerId        = Guid.NewGuid().ToString();
            var anotherOwnerId = Guid.NewGuid().ToString();
            var country        = CountryCreator.Create();
            var city           = CityCreator.Create(country.Id);

            var home1 = HomeCreator.CreateOwnerHome(ownerId, city.Id);
            var home2 = HomeCreator.CreateManagedHome(ownerId, city.Id);
            var home3 = HomeCreator.CreateManagedHome(ownerId, city.Id);
            var home4 = HomeCreator.CreateManagedHome(anotherOwnerId, city.Id);

            var user1 = UserCreator.Create("Debelin", "Butov", "but4eto", "*****@*****.**");
            var user2 = UserCreator.Create("Shunko", "Shpekov", "shpeka", "*****@*****.**");
            var user3 = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**");

            int id1 = 1;
            int id2 = 2;
            int id3 = 3;
            int id4 = 4;

            var contract1 = ContractCreator.CreateRentalContract(id1);
            var contract2 = ContractCreator.CreateRentalContract(id2);
            var contract3 = ContractCreator.CreateRentalContract(id3);
            var contract4 = ContractCreator.CreateRentalContract(id4);

            var rental1 = RentalCreator.Create(id1, country, city, user1, home1, contract1);
            var rental2 = RentalCreator.Create(id2, country, city, user2, home2, contract2);
            var rental3 = RentalCreator.Create(id3, country, city, user3, home3, contract3);
            var rental4 = RentalCreator.Create(id4, country, city, user3, home4, contract4);

            await this.Context.Countries.AddAsync(country);

            await this.Context.Cities.AddAsync(city);

            await this.Context.Homes.AddRangeAsync(home1, home2, home3, home4);

            await this.Context.Users.AddRangeAsync(user1, user2, user3);

            await this.Context.Rentals.AddRangeAsync(rental1, rental2, rental3, rental4);

            await this.Context.Contracts.AddRangeAsync(contract1, contract2, contract3, contract4);

            await this.Context.SaveChangesAsync();

            var service = new OwnerRentalService(this.Context, null, null, null, null);

            // Act
            var result        = (await service.GetRentalsAsync(ownerId)).ToList();
            var expectedCount = this.Context.Rentals
                                .Where(r => r.Home.OwnerId == ownerId)
                                .Count();

            // Assert
            result.Should().AllBeOfType <OwnerIndexRentalServiceModel>();
            result.Should().HaveCount(expectedCount);
            result.Should().HaveCount(3, "because I've put 3 rentals associated with this owner");
            result[0].Should().BeOfType <OwnerIndexRentalServiceModel>()
            .Which.StartDate
            .Should().Be(rental1.RentDate.ToString(StandartDateFormat));
            result[0].Should().BeOfType <OwnerIndexRentalServiceModel>()
            .Which.Duration
            .Should().Be(rental1.Duration);
            result[0].Should().BeOfType <OwnerIndexRentalServiceModel>()
            .Which.Tenant
            .Should().Be(string.Format(TenantFullName, rental1.Tenant.FirstName, rental1.Tenant.LastName));
        }