[TestMethod] // [2] Update Tenant
        public void PutTenantUpdatesTenant()
        {
           
           
            //Arrange
            var tCtrl = new TenantsController();

            var newTenant = new TenantModel
            {
                FirstName = "Test",
                LastName = "LastNameTest",
                Telephone = "12223334444",
                EmailAddress = "*****@*****.**"
            };

            //The result of the Post Request
            IHttpActionResult result = tCtrl.PostTenant(newTenant);

            //Cast result of the content result so that I can gether information form the Contente
            CreatedAtRouteNegotiatedContentResult<TenantModel> contentResult = (CreatedAtRouteNegotiatedContentResult<TenantModel>)result;

            //Result containts the tenant I have just created
            result = tCtrl.GetTenant(contentResult.Content.TenantId);

            //Get tenant model from result
            OkNegotiatedContentResult<TenantModel> tenantResult = (OkNegotiatedContentResult<TenantModel>)result;

            //Act
            result = tCtrl.PutTenant(tenantResult.Content.TenantId, newTenant);

            //Assert
            Assert.IsInstanceOfType(result, typeof(StatusCodeResult));
        }
        public void DeleteTenantDeletesTenant()
        {
            //Arrange:
            // Instantiate TenantsController so its methods can be called
            // Create a new tenant to be deleted, and get its tenant ID
            var tenantController = new TenantsController();

            var tenant = new TenantModel
            {
                FirstName = "Testy",
                LastName = "Testering",
                Telephone = "555-1212",
                EmailAddress = "*****@*****.**"
            };
            IHttpActionResult result = tenantController.PostTenant(tenant);
            CreatedAtRouteNegotiatedContentResult<TenantModel> contentResult =
                (CreatedAtRouteNegotiatedContentResult<TenantModel>)result;

            int tenantIdToDelete = contentResult.Content.TenantId;

            // Add a lease corresponding to the tenant
            int createdLeaseId;
            using (var leaseController = new LeasesController())
            {
                var lease = new LeaseModel
                {
                    CreatedDate = new DateTime(2014, 9, 30),
                    PropertyId = 1,
                    TenantId = tenantIdToDelete,
                    StartDate = new DateTime(2015, 1, 30),
                    Rent = 800,
                    LeaseType = Constants.RentPeriod.Monthly
                };
                IHttpActionResult leaseResult = leaseController.PostLease(lease);
                CreatedAtRouteNegotiatedContentResult<LeaseModel> leaseContentResult =
                    (CreatedAtRouteNegotiatedContentResult<LeaseModel>)leaseResult;

                createdLeaseId = leaseContentResult.Content.LeaseId;
            }

            //Act: Call DeleteTenant
            result = tenantController.DeleteTenant(tenantIdToDelete);

            //Assert:
            // Verify that HTTP result is OK
            // Verify that reading deleted tenant returns result not found
            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult<TenantModel>));

            result = tenantController.GetTenant(tenantIdToDelete);
            Assert.IsInstanceOfType(result, typeof(NotFoundResult));

            // Verify that the lease created above was deleted
            using (var leaseController = new LeasesController())
            {
                IHttpActionResult leaseResult = leaseController.GetLease(createdLeaseId);
                Assert.IsInstanceOfType(leaseResult, typeof(NotFoundResult));
            }
        }
        [TestMethod]// [3] Create Tenant
        public void PostTenantCreatesTenant()
        {
            //arrange 
            var Tcrtl = new TenantsController();

            //Act
            var newTenant = new TenantModel
            {
                FirstName = "Test",
                LastName = "LastNameTest",
                Telephone = "12223334444",
                EmailAddress = "*****@*****.**"
            };

            //Result of the post request
            IHttpActionResult result = Tcrtl.PostTenant(newTenant);

            //Assert
            Assert.IsInstanceOfType(result, typeof(CreatedAtRouteNegotiatedContentResult<TenantModel>));
        }
        [TestMethod] // [4] Delete Tenant
        public void DeletePropertyDeleteProperty()
        {
            //Arrange
            var tctrl = new TenantsController();

            //Act
            var newTenant = new TenantModel
            {
                FirstName = "Test",
                LastName = "LastNameTest",
                Telephone = "12223334444",
                EmailAddress = "*****@*****.**"
            };

            //Add 'new tenant' to database using post
            //save returned value as result
            IHttpActionResult result = tctrl.PostTenant(newTenant);

            //Cast result as content result so I can gather intel on it
            CreatedAtRouteNegotiatedContentResult<TenantModel> contentResult = (CreatedAtRouteNegotiatedContentResult<TenantModel>)result;

            //Result contains the property I had just created 
            result = tctrl.GetTenant(contentResult.Content.TenantId);

            //get tenantmodel from result
            OkNegotiatedContentResult<TenantModel> tenantResult = (OkNegotiatedContentResult<TenantModel>)result;

            //Act
            result = tctrl.DeleteTenant(contentResult.Content.TenantId);

            //Assert
            //If action returns not found
            Assert.IsNotInstanceOfType(result, typeof(NotFoundResult));

            //If action retruns OK()
            Assert.IsInstanceOfType(result, typeof(OkNegotiatedContentResult<TenantModel>));


        }
        public void PostTenantCreatesTenant()
        {
            //Arrange: Instantiate TenantsController so its methods can be called
            var tenantController = new TenantsController();

            //Act:
            // Create a TenantModel object populated with test data,
            //  and call PostTenant
            var newTenant = new TenantModel
            {
                FirstName = "Testy",
                LastName = "McTest",
                Telephone = "555-1212",
                EmailAddress = "*****@*****.**"
            };
            IHttpActionResult result = tenantController.PostTenant(newTenant);

            //Assert:
            // Verify that the HTTP result is CreatedAtRouteNegotiatedContentResult
            // Verify that the HTTP result body contains a nonzero tenant ID
            Assert.IsInstanceOfType
                (result, typeof(CreatedAtRouteNegotiatedContentResult<TenantModel>));
            CreatedAtRouteNegotiatedContentResult<TenantModel> contentResult =
                (CreatedAtRouteNegotiatedContentResult<TenantModel>)result;
            Assert.IsTrue(contentResult.Content.TenantId != 0);

            // Delete the test tenant
            result = tenantController.DeleteTenant(contentResult.Content.TenantId);
        }