old_contents: import unittest
  
  import frappe
  from frappe.www.list import get_list_context
  
  
  class TestWebsite(unittest.TestCase):
  	def test_get_context_hook_of_webform(self):
  		create_custom_doctype()
  		create_webform()
  
  		# check context for apps without any hook
  		context_list = get_list_context("", "Custom Doctype", "test-webform")
  		self.assertFalse(context_list)
  
  		# create a hook to get webform_context
  		set_webform_hook(
  			"webform_list_context",
  			"frappe.www._test._test_webform.webform_list_context",
  		)
  		# check context for apps with hook
  		context_list = get_list_context("", "Custom Doctype", "test-webform")
  		self.assertTrue(context_list)
  
  
  def create_custom_doctype():
  	frappe.get_doc(
  		{
  			"doctype": "DocType",
  			"name": "Custom Doctype",
  			"module": "Core",
  			"custom": 1,
  			"fields": [{"label": "Title", "fieldname": "title", "fieldtype": "Data"}],
  		}
  	).insert(ignore_if_duplicate=True)
  
  
  def create_webform():
  	frappe.get_doc(
  		{
  			"doctype": "Web Form",
  			"module": "Core",
  			"title": "Test Webform",
  			"route": "test-webform",
  			"doc_type": "Custom Doctype",
  			"web_form_fields": [
  				{
  					"doctype": "Web Form Field",
  					"fieldname": "title",
  					"fieldtype": "Data",
  					"label": "Title",
  				}
  			],
  		}
  	).insert(ignore_if_duplicate=True)
  
  
  def set_webform_hook(key, value):
  	from frappe import hooks
  
  	# reset hooks
  	for hook in "webform_list_context":
  		if hasattr(hooks, hook):
  			delattr(hooks, hook)
  
  	setattr(hooks, key, value)
  	frappe.cache().delete_key("app_hooks")
  
new_contents: import unittest
  
  import frappe
  from frappe.utils import set_request
  from frappe.website.serve import get_response
  from frappe.www.list import get_list_context
  
  
  class TestWebform(unittest.TestCase):
  	def test_webform_publish_functionality(self):
  		edit_profile = frappe.get_doc("Web Form", "edit-profile")
  		# publish webform
  		edit_profile.published = True
  		edit_profile.save()
  		set_request(method="GET", path="update-profile")
  		response = get_response()
  		self.assertEqual(response.status_code, 200)
  
  		# un-publish webform
  		edit_profile.published = False
  		edit_profile.save()
  		response = get_response()
  		self.assertEqual(response.status_code, 404)
  
  	def test_get_context_hook_of_webform(self):
  		create_custom_doctype()
  		create_webform()
  
  		# check context for apps without any hook
  		context_list = get_list_context("", "Custom Doctype", "test-webform")
  		self.assertFalse(context_list)
  
  		# create a hook to get webform_context
  		set_webform_hook(
  			"webform_list_context",
  			"frappe.www._test._test_webform.webform_list_context",
  		)
  		# check context for apps with hook
  		context_list = get_list_context("", "Custom Doctype", "test-webform")
  		self.assertTrue(context_list)
  
  
  def create_custom_doctype():
  	frappe.get_doc(
  		{
  			"doctype": "DocType",
  			"name": "Custom Doctype",
  			"module": "Core",
  			"custom": 1,
  			"fields": [{"label": "Title", "fieldname": "title", "fieldtype": "Data"}],
  		}
  	).insert(ignore_if_duplicate=True)
  
  
  def create_webform():
  	frappe.get_doc(
  		{
  			"doctype": "Web Form",
  			"module": "Core",
  			"title": "Test Webform",
  			"route": "test-webform",
  			"doc_type": "Custom Doctype",
  			"web_form_fields": [
  				{
  					"doctype": "Web Form Field",
  					"fieldname": "title",
  					"fieldtype": "Data",
  					"label": "Title",
  				}
  			],
  		}
  	).insert(ignore_if_duplicate=True)
  
  
  def set_webform_hook(key, value):
  	from frappe import hooks
  
  	# reset hooks
  	for hook in "webform_list_context":
  		if hasattr(hooks, hook):
  			delattr(hooks, hook)
  
  	setattr(hooks, key, value)
  	frappe.cache().delete_key("app_hooks")
  
subject: Add a case to cover webform publish functionality