public void ModelTest_AddRestaurant() {
			// create a new restaurant
			Restaurant r = new Restaurant() { Name = "Testaurant", Category = "Category", City = "Butler", State = "PA", Street = "100 Main Street", ZipCode = "16001" };

			// test model
			using ( Repo repo = new Repo() ) {
				CrudResult result = repo.SaveRestaurant( r );
				Assert.IsTrue( result.Success, "Add restaurant did not succeed." );
			}

			// delete test restaurant
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Restaurant.Attach( r );
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ModelTest_GetReviewsByUser() {
			// add review to guarantee a find
			Review r = new Review() { RestaurantId = 1, Comments = "This place is supr AWESOME!", Rating = 5, UserId = usr };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Review.Add( r );
				ctx.SaveChanges();

				// test the repository
				using ( Repo repo = new Repo() ) {
					ListResult<Review> result = repo.GetReviewsByUser( usr );
					Assert.IsNotNull( result.List, "No review found for user " + usr + "." );
				}

				// delete the created review
				r = ctx.Review.Where( d => d.Id == r.Id ).First();
				ctx.Review.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ModelTest_GetRestaurantById() {
			// add restaurant to guarantee a find
			Restaurant r = new Restaurant() { Name = "Testaurant", City = "butLEr", State = "PA" };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Restaurant.Add( r );
				ctx.SaveChanges();
				int id = r.Id;

				// test the repository
				using ( Repo repo = new Repo() ) {
					ItemResult<Restaurant> restaurant = repo.GetRestaurantById( id );
					Assert.IsNotNull( restaurant, "No restaurant with Id = " + restaurant.Item.Id + " found." );
				}

				// delete the created restaurant
				r = ctx.Restaurant.Where( d => d.Id == id ).First();
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ModelTest_GetRestaurantByCity() {
			// add restaurant to guarantee a find
			Restaurant r = new Restaurant() { Name = "Testaurant", City = "butLEr", State = "PA" };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Restaurant.Add( r );
				ctx.SaveChanges();

				// test the repository
				string city = "BUtler";
				using ( Repo repo = new Repo() ) {
					ListResult<Restaurant> restaurants = repo.GetRestaurantsByCity( city );
					Assert.IsNotNull( restaurants, "No restaurants in " + city + " found." );
				}

				// delete the created restaurant
				r = ctx.Restaurant.Where( d => d.Id == r.Id ).First();
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ApiTest_GetRestaurantByCity() {
			// add restaurant to guarantee a find
			Restaurant r = new Restaurant() { Name = "Testaurant", City = "butLEr", State = "PA" };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Restaurant.Add( r );
				ctx.SaveChanges();
				string city = "BUtler";

				// test the api
				var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
				var response = ApiClient.GetRequest( token, uri, "/api/v1/GetRestaurant?City=" + city ).Result;

				ListResult<Restaurant> result = JsonConvert.DeserializeObject<ListResult<Restaurant>>( response.ToString() );
				Assert.IsNotNull( result, "No restaurants were found in " + city + "." );

				// delete the created restaurant
				r = ctx.Restaurant.Where( d => d.Id == r.Id ).First();
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ApiTest_GetRestaurantById() {
			// add restaurant to guarantee a find
			Restaurant r = new Restaurant() { Name = "Testaurant", City = "butLEr", State = "PA" };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Restaurant.Add( r );
				ctx.SaveChanges();
				int id = r.Id;

				// test the api
				var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
				var response = ApiClient.GetRequest( token, uri, "/api/v1/GetRestaurant?Id=" + id ).Result;

				ItemResult<Restaurant> result = JsonConvert.DeserializeObject<ItemResult<Restaurant>>( response.ToString() );
				Assert.IsNotNull( result, "No restaurant with Id = " + result.Item.Id + " found." );

				// delete the created restaurant
				r = ctx.Restaurant.Where( d => d.Id == id ).First();
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ModelTest_AddReview() {
			// create a new review
			Review r = new Review() { RestaurantId = 1, Comments = "This place is supr AWESOME!", Rating = 5, UserId = usr };


			// test model
			using ( Repo repo = new Repo() ) {
				CrudResult result = repo.SaveReview( r );
				Assert.IsTrue( result.Success, "Add review did not succeed." );
			}

			// delete test restaurant
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Review.Attach( r );
				ctx.Review.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ModelTest_DeleteReview() {
			// add review to guarantee a find
			Review r = new Review() { RestaurantId = 1, Comments = "This place is supr AWESOME!", Rating = 5, UserId = usr };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Review.Add( r );
				ctx.SaveChanges();

				// test the repository
				using ( Repo repo = new Repo() ) {
					CrudResult result = repo.DeleteReview( r.Id );
					Assert.IsTrue( result.Success, "Review did not delete successfully." );
				}
			}
		}
		public void ApiTest_GetReviewsByUser() {
			// add review to guarantee a find
			Review r = new Review() { RestaurantId = 1, Comments = "This place is supr AWESOME!", Rating = 5, UserId = usr };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Review.Add( r );
				ctx.SaveChanges();

				// test the api
				var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
				var response = ApiClient.GetRequest( token, uri, "/api/v1/GetReviews?User="******"No reviews were found for " + usr + "." );

				// delete the created review
				r = ctx.Review.Where( d => d.Id == r.Id ).First();
				ctx.Review.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ApiTest_AddRestaurant() {
			// create a new restaurant
			KeyValuePair<string, string> kvp = new KeyValuePair<string, string>();
			List<KeyValuePair<string, string>> formData = new List<KeyValuePair<string, string>>();
			kvp = new KeyValuePair<string, string>( "Name", "Testaurant" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "Category", "Category" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "City", "Butler" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "State", "PA" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "Street", "100 Main Street" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "ZipCode", "16001" );
			formData.Add( kvp );

			// test api
			var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
			var response = ApiClient.PostRequest( token, uri, "/api/v1/AddRestaurant", formData ).Result;

			CrudResult result = JsonConvert.DeserializeObject<CrudResult>( response.ToString() );
			Assert.IsTrue( result.Success, "Add restaurant did not succeed." );

			// delete test restaurant
			using ( SuprContext ctx = new SuprContext() ) {
				Restaurant r = ctx.Restaurant.Where( d => d.Name == "Testaurant" ).First();
				ctx.Restaurant.Remove( r );
				ctx.SaveChanges();
			}
		}
		public void ApiTest_DeleteReview() {
			// add review to guarantee a find
			Review r = new Review() { RestaurantId = 1, Comments = "This place is supr AWESOME!", Rating = 5, UserId = usr };
			using ( SuprContext ctx = new SuprContext() ) {
				ctx.Review.Add( r );
				ctx.SaveChanges();

				// test the api
				var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
				var response = ApiClient.DeleteRequest( token, uri, "/api/v1/DeleteReview?Id=" + r.Id ).Result;

				CrudResult result = JsonConvert.DeserializeObject<CrudResult>( response.ToString() );
				Assert.IsTrue( result.Success, "Delete review did not succeed." );
			}
		}
		public void ApiTest_AddReview() {
			// create a new review
			KeyValuePair<string, string> kvp = new KeyValuePair<string, string>();
			List<KeyValuePair<string, string>> formData = new List<KeyValuePair<string, string>>();
			kvp = new KeyValuePair<string, string>( "RestaurantId", "1" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "Comments", "This place is supr AWESOME!" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "Rating", "5" );
			formData.Add( kvp );
			kvp = new KeyValuePair<string, string>( "UserId", "*****@*****.**" );
			formData.Add( kvp );

			// test the api
			var token = ApiClient.GetAPIToken( usr, pwd, uri ).Result;
			var response = ApiClient.PostRequest( token, uri, "/api/v1/AddReview", formData ).Result;

			CrudResult result = JsonConvert.DeserializeObject<CrudResult>( response.ToString() );
			Assert.IsTrue( result.Success, "Add review did not succeed." );

			// delete test review
			using ( SuprContext ctx = new SuprContext() ) {
				Review r = ctx.Review.Where( d => d.RestaurantId == 1 && d.UserId == "*****@*****.**" ).First();
				ctx.Review.Remove( r );
				ctx.SaveChanges();
			}
		}