Esempio n. 1
0
        public void TransfereeUpdateHomeFindingProperty_DoesNotWipeOutOtherDataFromIncompleteViewModel()
        {
            // Arrange
            Order order = BuildOrder(false);

            Context.Orders.Add(order);
            HomeFindingProperty hfp = order.HomeFinding.HomeFindingProperties.First();

            Context.SaveChanges();

            // Act
            var expectedStreet = hfp.Property.Street1;
            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.Id    = hfp.Id;
            propertyVM.Liked = null;
            // This ViewModel doesn't have anything for the property meaning nothing gets updated
            // Note: This is more of a test of the Mapper instead of the controller

            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);
            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.UpdateLiked(propertyVM);

            // Assert
            Context.Entry(hfp).Reload();
            hfp.Property.Street1.Should().Be(expectedStreet);
        }
Esempio n. 2
0
        public async Task TransfereeInsertProperty_ValidInsertRequest_CreatesRecords()
        {
            // Arrange
            Order order = BuildOrder();

            Context.Orders.Add(order);
            Context.SaveChanges();
            Context.Entry(order).Reload();

            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.PropertyStreet1 = "abc";
            propertyVM.PropertyStreet2 = "apt 123";
            propertyVM.OrderId         = order.Id;

            // Act
            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);
            HttpStatusCodeResult result = (HttpStatusCodeResult)controller.Create(propertyVM);

            // Assert
            result.StatusCode.Should().Be((int)HttpStatusCode.Created);

            Context.Entry(order).Reload();
            order.HomeFinding.HomeFindingProperties.Count().Should().Be(1);

            HomeFindingProperty hfp      = order.HomeFinding.HomeFindingProperties.First();
            Property            property = hfp.Property;

            property.Street1.Should().Be(propertyVM.PropertyStreet1);
            property.Street2.Should().Be(propertyVM.PropertyStreet2);
        }
Esempio n. 3
0
        public void UpdateHomeFindingProperty_UpdatesDisliked()
        {
            // Arrange
            Order order = BuildOrder(false);

            Context.Orders.Add(order);
            HomeFindingProperty hfp = order.HomeFinding.HomeFindingProperties.First();

            hfp.Liked = null; // ensure this isn't already disliked
            Context.SaveChanges();

            // Act
            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.Id    = hfp.Id;
            propertyVM.Liked = false;

            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUser(dsc.Id, dsc.UserName);
            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.UpdateLiked(propertyVM);

            // Assert
            Context.Entry(hfp).Reload();
            hfp.Liked.Should().BeFalse();
        }
Esempio n. 4
0
        public void TransfereeUpdateHomeFindingProperty_UpdatesNull()
        {
            // Arrange
            Order order = BuildOrder(false);

            Context.Orders.Add(order);
            HomeFindingProperty hfp = order.HomeFinding.HomeFindingProperties.First();

            hfp.Liked = true; // ensure this is already liked
            Context.SaveChanges();

            // Act
            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.Id    = hfp.Id;
            propertyVM.Liked = null;

            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);
            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.UpdateLiked(propertyVM);

            // Assert
            Context.Entry(hfp).Reload();
            hfp.Liked.Should().BeNull();
        }
Esempio n. 5
0
        public void TransfereeUpdateHomeFindingProperty_UpdatesViewingDate()
        {
            // Arrange
            Order order = BuildOrder(false);

            Context.Orders.Add(order);
            HomeFindingProperty hfp = order.HomeFinding.HomeFindingProperties.First();

            hfp.ViewingDate = null; // ensure this isn't already scheduled
            Context.SaveChanges();

            // Act
            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.Id          = hfp.Id;
            propertyVM.ViewingDate = DateTime.Now;

            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);
            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.UpdateViewingDate(propertyVM);

            // Assert
            Context.Entry(hfp).Reload();
            hfp.ViewingDate.Should().BeSameDateAs(propertyVM.ViewingDate.Value);
        }
Esempio n. 6
0
        public void TransfereeDeleteHomeFindingProperty_SoftDeletesTheRecord()
        {
            // Arrange
            Order order = BuildOrder(false);

            Context.Orders.Add(order);
            Context.SaveChanges();

            // Act
            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);

            HomeFindingProperty  hfp      = order.HomeFinding.HomeFindingProperties.First();
            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.Delete(hfp.Id);

            Context.Entry(order).Reload();

            // Assert
            // Soft delete does not remove the association
            order.HomeFinding.HomeFindingProperties.Count().Should().Be(1);

            HomeFindingProperty loadedHfp = order.HomeFinding.HomeFindingProperties.First();

            loadedHfp.Deleted.Should().BeTrue();

            HttpStatusCodeResult expectedCode = new HttpStatusCodeResult(HttpStatusCode.NoContent);

            response.StatusCode.Should().Be(expectedCode.StatusCode);
        }
Esempio n. 7
0
        private HomeFindingPropertiesController SetUpHomeFindingPropertiesController()
        {
            config     = new MapperConfiguration(c => c.AddProfile(new MappingProfile()));
            mapper     = config.CreateMapper();
            unitOfWork = new UnitOfWork(Context);
            imageStore = new ImageStore();
            var controller = new HomeFindingPropertiesController(unitOfWork, mapper, imageStore);

            return(controller);
        }
Esempio n. 8
0
        public void TransfereeDeleteHomeFindingProperty_ReturnsRecordNotFoundWithBadId()
        {
            HttpStatusCodeResult            expectedCode = new HttpStatusCodeResult(HttpStatusCode.NotFound);
            HomeFindingPropertiesController controller   = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);

            HttpStatusCodeResult response = (HttpStatusCodeResult)controller.Delete("SomeNonExisitingRecordId");

            response.StatusCode.Should().Be(expectedCode.StatusCode);
        }
Esempio n. 9
0
        public async Task TransfereeInsertProperty_WithPhotos_AddsPhotosToBlobStorage()
        {
            // Arrange
            Order order = BuildOrder();

            Context.Orders.Add(order);
            Context.SaveChanges();
            Context.Entry(order).Reload();

            HousingPropertyViewModel propertyVM = new HousingPropertyViewModel();

            propertyVM.PropertyStreet1 = "abc";
            propertyVM.PropertyStreet2 = "apt 123";
            propertyVM.OrderId         = order.Id;
            var stream = Assembly.GetExecutingAssembly()
                         .GetManifestResourceStream("Odin.IntegrationTests.Resources.odin_login.png");
            var postedFile  = new HttpPostedFileBaseTesting(stream, "image/png", "odin_login.png");
            var postedFile2 = new HttpPostedFileBaseTesting(stream, "image/png", "odin_login.png");

            propertyVM.UploadedPhotos = new List <HttpPostedFileBase> {
                postedFile, postedFile2
            };

            // Act
            HomeFindingPropertiesController controller = SetUpHomeFindingPropertiesController();

            controller.MockCurrentUserAndRole(transferee.Id, transferee.UserName, UserRoles.Transferee);
            controller.Create(propertyVM);

            // Assert
            Context.Entry(order).Reload();
            HomeFindingProperty hfp      = order.HomeFinding.HomeFindingProperties.First();
            Property            property = hfp.Property;

            property.Photos.Count().Should().Be(2);

            Photo      propertyPhoto  = property.Photos.First();
            ICloudBlob imageReference = imageStore.ImageBlobFor(propertyPhoto.StorageId);

            imageReference.Should().NotBeNull();

            // Cleanup so we don't flood the azure container
            foreach (Photo p in property.Photos)
            {
                ICloudBlob imageBlob = imageStore.ImageBlobFor(p.StorageId);
                imageBlob.Delete();
            }
        }