test: Recommendations, Reviews and Wishlist

- Tests for verified and unverified item reviewers
- Test for recommended items and their prices
- Test for adding removing items from Wishlist
- Bug: Wishlist deletes all entries of an item code irrespective of user
- Get Item reviews only if enabled
- Removed price fields from Wishlist Item and made fields read only
- Removed unused price stored as data on Wishlist buttons
- Customer Reviews page checks if reviews are enabled else shows No Reviews
- Moved price stock fetching in Wishlist in separate function
- Made fields read only in Item Review
diff --git a/erpnext/templates/generators/item/item_details.html b/erpnext/templates/generators/item/item_details.html
index 307e0fe..04a4aee 100644
--- a/erpnext/templates/generators/item/item_details.html
+++ b/erpnext/templates/generators/item/item_details.html
@@ -13,9 +13,7 @@
 		<!-- Wishlist -->
 		{% if cart_settings.enable_wishlist %}
 			<div class="like-action-item-fp like-action {{ 'like-action-wished' if wished else ''}} ml-2"
-				data-item-code="{{ doc.item_code }}"
-				data-price="{{ price_info.get('price_list_rate') if price_info else 0 }}"
-				data-formatted-price="{{ price_info.get('formatted_price') if price_info else 0 }}">
+				data-item-code="{{ doc.item_code }}">
 				<svg class="icon sm">
 					<use class="{{ 'wished' if wished else 'not-wished' }} wish-icon" href="#icon-heart"></use>
 				</svg>
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index 99b7154..9663b92 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -231,7 +231,7 @@
 			{{ average_rating or 0 }}
 		</h2>
 		<div class="mb-2" style="margin-top: -.5rem;">
-			{{ frappe.utils.cstr(total_reviews) + " " + _("ratings") }}
+			{{ frappe.utils.cstr(total_reviews or 0) + " " + _("ratings") }}
 		</div>
 
 		<!-- Ratings Summary -->
diff --git a/erpnext/templates/pages/customer_reviews.html b/erpnext/templates/pages/customer_reviews.html
index 3621fcf..121bec3 100644
--- a/erpnext/templates/pages/customer_reviews.html
+++ b/erpnext/templates/pages/customer_reviews.html
@@ -5,45 +5,54 @@
 
 {% block page_content %}
 <div class="product-container reviews-full-page col-md-12">
-	<!-- Title and Action -->
-	<div class="w-100 mb-6 d-flex">
-		<div class="reviews-header col-9">
-			{{ _("Customer Reviews") }}
+	{% if enable_reviews %}
+		<!-- Title and Action -->
+		<div class="w-100 mb-6 d-flex">
+			<div class="reviews-header col-9">
+				{{ _("Customer Reviews") }}
+			</div>
+
+			<div class="write-a-review-btn col-3">
+				<!-- Write a Review for legitimate users -->
+				{% if frappe.session.user != "Guest" and user_is_customer %}
+					<button class="btn btn-write-review"
+						data-web-item="{{ web_item }}">
+						{{ _("Write a Review") }}
+					</button>
+				{% endif %}
+			</div>
 		</div>
 
-		<div class="write-a-review-btn col-3">
-			<!-- Write a Review for legitimate users -->
-			{% if frappe.session.user != "Guest" and user_is_customer %}
-				<button class="btn btn-write-review"
-					data-web-item="{{ web_item }}">
-					{{ _("Write a Review") }}
-				</button>
+		<!-- Summary -->
+		{{ ratings_summary(reviews, reviews_per_rating, average_rating, average_whole_rating, for_summary=True, total_reviews=total_reviews) }}
+
+
+		<!-- Reviews and Comments -->
+		<div class="mt-8">
+			{% if reviews %}
+				{{ user_review(reviews) }}
+
+				{% if not reviews | len >= total_reviews %}
+					<button class="btn btn-light btn-view-more mr-2 mt-4 mb-4 w-30"
+						data-web-item="{{ web_item }}">
+						{{ _("View More") }}
+					</button>
+				{% endif %}
+
+			{% else %}
+				<h6 class="text-muted mt-6">
+					{{ _("No Reviews") }}
+				</h6>
 			{% endif %}
 		</div>
-	</div>
-
-	<!-- Summary -->
-	{{ ratings_summary(reviews, reviews_per_rating, average_rating, average_whole_rating, for_summary=True, total_reviews=total_reviews) }}
-
-
-	<!-- Reviews and Comments -->
-	<div class="mt-8">
-		{% if reviews %}
-			{{ user_review(reviews) }}
-
-			{% if not reviews | len >= total_reviews %}
-				<button class="btn btn-light btn-view-more mr-2 mt-4 mb-4 w-30"
-					data-web-item="{{ web_item }}">
-					{{ _("View More") }}
-				</button>
-			{% endif %}
-
-		{% else %}
-			<h6 class="text-muted mt-6">
+	{% else %}
+		<!-- If reviews are disabled -->
+		<div class="text-center">
+			<h3 class="text-muted mt-8">
 				{{ _("No Reviews") }}
-			</h6>
-		{% endif %}
-	</div>
+			</h3>
+		</div>
+	{% endif %}
 </div>
 
 {% endblock %}
diff --git a/erpnext/templates/pages/customer_reviews.py b/erpnext/templates/pages/customer_reviews.py
index 2b8ebff..696ecea 100644
--- a/erpnext/templates/pages/customer_reviews.py
+++ b/erpnext/templates/pages/customer_reviews.py
@@ -3,6 +3,7 @@
 import frappe
 from erpnext.e_commerce.doctype.item_review.item_review import get_item_reviews
 from erpnext.e_commerce.doctype.website_item.website_item import check_if_user_is_customer
+from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import get_shopping_cart_settings
 
 def get_context(context):
 	context.no_cache = 1
@@ -13,4 +14,6 @@
 		context.item_code = frappe.form_dict.get("item_code")
 		context.web_item = frappe.db.get_value("Website Item", {"item_code": context.item_code}, "name")
 		context.user_is_customer = check_if_user_is_customer()
-		get_item_reviews(context.web_item, 0, 10, context)
+		context.enable_reviews = get_shopping_cart_settings().enable_reviews
+		if context.enable_reviews:
+			get_item_reviews(context.web_item, 0, 10, context)
diff --git a/erpnext/templates/pages/wishlist.py b/erpnext/templates/pages/wishlist.py
index dfd60f5..9fa83a9 100644
--- a/erpnext/templates/pages/wishlist.py
+++ b/erpnext/templates/pages/wishlist.py
@@ -3,29 +3,16 @@
 import frappe
 from erpnext.utilities.product import get_price
 from erpnext.e_commerce.shopping_cart.cart import _set_price_list
+from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import get_shopping_cart_settings
 
 def get_context(context):
-	settings = frappe.get_doc("E Commerce Settings")
-	items = get_wishlist_items()
-	selling_price_list = _set_price_list(settings)
+	is_guest = frappe.session.user == "Guest"
 
-	for item in items:
-		if settings.show_stock_availability:
-			item.available = get_stock_availability(item.item_code, item.get("warehouse"))
+	settings = get_shopping_cart_settings()
+	items = get_wishlist_items() if not is_guest else []
+	selling_price_list = _set_price_list(settings) if not is_guest else None
 
-		price_details = get_price(
-			item.item_code,
-			selling_price_list,
-			settings.default_customer_group,
-			settings.company
-		)
-
-		if price_details:
-			item.formatted_price = price_details.get('formatted_price')
-			item.formatted_mrp = price_details.get('formatted_mrp')
-			if item.formatted_mrp:
-				item.discount = price_details.get('formatted_discount_percent') or \
-					price_details.get('formatted_discount_rate')
+	items = set_stock_price_details(items, settings, selling_price_list)
 
 	context.items = items
 	context.settings = settings
@@ -53,6 +40,27 @@
 		},
 		fields=[
 			"web_item_name", "item_code", "item_name",
-			"website_item", "price", "warehouse",
+			"website_item", "warehouse",
 			"image", "item_group", "route"
 		])
+
+def set_stock_price_details(items, settings, selling_price_list):
+	for item in items:
+		if settings.show_stock_availability:
+			item.available = get_stock_availability(item.item_code, item.get("warehouse"))
+
+		price_details = get_price(
+			item.item_code,
+			selling_price_list,
+			settings.default_customer_group,
+			settings.company
+		)
+
+		if price_details:
+			item.formatted_price = price_details.get('formatted_price')
+			item.formatted_mrp = price_details.get('formatted_mrp')
+			if item.formatted_mrp:
+				item.discount = price_details.get('formatted_discount_percent') or \
+					price_details.get('formatted_discount_rate')
+
+	return items
\ No newline at end of file