[Fact] // 7. async Task<OwnerRequestDetailsServiceModel> GetRequestDetailsAsync(string requestId) public async void GetRequestDetailsAsync_WithGivenRequestId_ShouldReturnServiceModel() { // Arrange var country = CountryCreator.Create(); var city = CityCreator.Create(country.Id); var owner = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**"); var home = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var request = RequestCreator.Create(home); var doc = new byte[1024]; request.Document = doc; await this.Context.Countries.AddAsync(country); await this.Context.Cities.AddAsync(city); await this.Context.Users.AddAsync(owner); await this.Context.Homes.AddAsync(home); await this.Context.Requests.AddAsync(request); await this.Context.SaveChangesAsync(); var model = new OwnerRequestDetailsServiceModel { Id = request.Id, Date = request.Date.ToString("dd/MM/yyyy h:mm tt"), UserFirstName = request.User.FirstName, UserLastName = request.User.LastName, Email = request.User.Email, Phone = request.User.PhoneNumber, RequestType = request.Type.ToString(), Document = doc, }; var service = new OwnerRequestService(this.Context); // Act var result = await service.GetRequestDetailsAsync(request.Id); var expected = model; // Assert result.Should().BeOfType <OwnerRequestDetailsServiceModel>(); result.Should().Equals(expected); }
[Fact] // 2. async Task<IEnumerable<OwnerAllRequestsServiceModel>> GetAllRequestsWthDetailsAsync(string id) public async void GetAllRequestsWthDetailsAsync_WithGivenOwnerId_ShouldReturnCollectionOfRequests() { // Arrange var country = CountryCreator.Create(); var city = CityCreator.Create(country.Id); var owner = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**"); var anotherOwner = UserCreator.Create("Svinevud", "Kulchibutov", "kulkata", "*****@*****.**"); var home = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var home2 = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var homе3 = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var homе4 = HomeCreator.CreateOwnerHome(anotherOwner.Id, city.Id); var request = RequestCreator.Create(home); var request2 = RequestCreator.Create(home2); var request3 = RequestCreator.Create(homе3); var request4 = RequestCreator.Create(homе4); request2.User.UserName = "******"; request3.User.UserName = "******"; await this.Context.Countries.AddAsync(country); await this.Context.Cities.AddAsync(city); await this.Context.Users.AddRangeAsync(owner, anotherOwner); await this.Context.Homes.AddRangeAsync(home, home2, homе3, homе4); await this.Context.Requests.AddRangeAsync(request, request2, request3, request4); await this.Context.SaveChangesAsync(); var service = new OwnerRequestService(this.Context); // Act var result = (await service.GetAllRequestsWthDetailsAsync(owner.Id)).ToList(); var expected = await this.Context.Requests.Where(r => r.Home.OwnerId == owner.Id).ToListAsync(); // Assert result.Should().AllBeOfType <OwnerAllRequestsServiceModel>(); result.Count().Should().Equals(expected.Count()); result.Should().HaveCount(3, "because there are 3 homes for which the owner received requests individually"); result[0].Username = request.User.UserName; // shpeka result[1].Username = request2.User.UserName; // fileto result[2].Username = request3.User.UserName; // butcheto }
[Fact] // 3. async Task<Request> ApproveRequestAsync(string id) public async void ApproveRequestAsync_WithGivenId_ShouldApproveRequest_AndReturnTheRequest() { // Arrange var country = CountryCreator.Create(); var city = CityCreator.Create(country.Id); var owner = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**"); var home = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var home2 = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var request = RequestCreator.Create(home); var request2 = RequestCreator.Create(home2); var requestStatusBefore = request.Status; var request2StatusBefore = request2.Status; await this.Context.Countries.AddAsync(country); await this.Context.Cities.AddAsync(city); await this.Context.Users.AddAsync(owner); await this.Context.Homes.AddRangeAsync(home, home2); await this.Context.Requests.AddRangeAsync(request, request2); await this.Context.SaveChangesAsync(); var service = new OwnerRequestService(this.Context); // Act var result = await service.ApproveRequestAsync(request.Id); var result2 = await service.ApproveRequestAsync(request2.Id); var expected = RequestStatus.Approved; var expected2 = RequestStatus.Approved; // Assert result.Should().BeOfType <Request>(); result.Status.Should().Equals(expected); result2.Status.Should().Equals(expected2); result.Status.Should().NotBe(requestStatusBefore); result2.Status.Should().NotBe(request2StatusBefore); }
[Fact] // 5. async Task<byte[]> GetFileAsync(string requestId) public async void GetFileAsync_WithGivenRequestId_ShouldReturnByteArrayOfTheFile() { // Arrange var country = CountryCreator.Create(); var city = CityCreator.Create(country.Id); var owner = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**"); var anotherOwner = UserCreator.Create("Svinevud", "Kulchibutov", "kulkata", "*****@*****.**"); var home = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var request = RequestCreator.Create(home); request.Document = new byte [1024]; await this.Context.Countries.AddAsync(country); await this.Context.Cities.AddAsync(city); await this.Context.Users.AddAsync(owner); await this.Context.Homes.AddAsync(home); await this.Context.Requests.AddAsync(request); await this.Context.SaveChangesAsync(); var service = new OwnerRequestService(this.Context); // Act var result = await service.GetFileAsync(request.Id); var expected = await this.Context.Requests .Where(r => r.Id == request.Id) .Select(r => r.Document) .FirstOrDefaultAsync(); // Assert result.Should().BeOfType <byte[]>(); result.Should().Equals(expected); }
[Fact] // 4. async Task<bool> RejectRequestAsync(string id) public async void RejectRequestAsync_WithGivenId_ShouldRejectRequest_AndReturnTrue() { // Arrange var country = CountryCreator.Create(); var city = CityCreator.Create(country.Id); var owner = UserCreator.Create("Suzdurma", "Saturov", "satura", "*****@*****.**"); var anotherOwner = UserCreator.Create("Svinevud", "Kulchibutov", "kulkata", "*****@*****.**"); var home = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var home2 = HomeCreator.CreateOwnerHome(owner.Id, city.Id); var request = RequestCreator.Create(home); var request2 = RequestCreator.Create(home2); var requestStatusBefore = request.Status; var request2StatusBefore = request2.Status; await this.Context.Countries.AddAsync(country); await this.Context.Cities.AddAsync(city); await this.Context.Users.AddAsync(owner); await this.Context.Homes.AddRangeAsync(home, home2); await this.Context.Requests.AddRangeAsync(request, request2); await this.Context.SaveChangesAsync(); var service = new OwnerRequestService(this.Context); // Act var result = await service.RejectRequestAsync(request.Id); var result2 = await service.RejectRequestAsync(request2.Id); // Assert result.Should().BeTrue(); result2.Should().BeTrue(); }