def setUp(self): super(TestWebsiteSaleCheckoutAddress, self).setUp() self.website = self.env['website'].browse(1) self.country_id = self.env['res.country'].search([], limit=1).id self.WebsiteSaleController = WebsiteSale() self.default_address_values = { 'name': 'a res.partner address', 'email': '*****@*****.**', 'street': 'ooo', 'city': 'ooo', 'country_id': self.country_id, 'submitted': 1, }
class WebsiteSaleVisitorTests(TransactionCase): def setUp(self): super().setUp() self.website = self.env['website'].browse(1) self.WebsiteSaleController = WebsiteSale() self.cookies = {} def test_create_visitor_on_tracked_product(self): self.WebsiteSaleController = WebsiteSale() Visitor = self.env['website.visitor'] Track = self.env['website.track'] self.assertEqual(len(Visitor.search([])), 0, "No visitor at the moment") self.assertEqual(len(Track.search([])), 0, "No track at the moment") product = self.env.ref('product.product_product_7') with MockRequest(self.env, website=self.website): self.cookies = self.WebsiteSaleController.products_recently_viewed_update( product.id) self.assertEqual( len(Visitor.search([])), 1, "A visitor should be created after visiting a tracked product") self.assertEqual( len(Track.search([])), 1, "A track should be created after visiting a tracked product") with MockRequest(self.env, website=self.website, cookies=self.cookies): self.WebsiteSaleController.products_recently_viewed_update( product.id) self.assertEqual( len(Visitor.search([])), 1, "No visitor should be created after visiting another tracked product" ) self.assertEqual( len(Track.search([])), 1, "No track should be created after visiting the same tracked product before 30 min" ) product = self.env.ref('product.product_product_6') with MockRequest(self.env, website=self.website, cookies=self.cookies): self.WebsiteSaleController.products_recently_viewed_update( product.id) self.assertEqual( len(Visitor.search([])), 1, "No visitor should be created after visiting another tracked product" ) self.assertEqual( len(Track.search([])), 2, "A track should be created after visiting another tracked product")
def slider_data(self, **kwargs): slider_id = kwargs.get('slider_id', False) filter_id = kwargs.get('filter_id', False) slider_obj = request.env['slider'].sudo().search([('id', '=', int(slider_id))]) vals = {} if slider_obj: if slider_obj.slider_type == 'product': filter = slider_obj.slider_filter_ids[ 0] if not filter_id else request.env['slider.filter'].sudo( ).search([('id', '=', int(filter_id))]) if filter.filter_id.domain: compute_currency, pricelist_context, pricelist = WebsiteSale( )._get_compute_currency_and_context() domain = safe_eval(filter.filter_id.domain) domain += [ '|', ('website_id', '=', None), ('website_id', '=', request.website.id), ('website_published', '=', True) ] product = request.env['product.template'].sudo().search( domain, limit=slider_obj.slider_limit) vals = { 'slider_obj': slider_obj, 'filter_data': product, 'compute_currency': compute_currency, 'active_filter_data': filter_id if filter_id else slider_obj.slider_filter_ids[0].id, 'is_default': False if filter_id else True } tmplt_external_id = slider_obj.slider_style_id.get_external_id( ).get(slider_obj.slider_style_id.id) + "_template" tmplt = request.env['ir.ui.view'].sudo().search([ ('key', '=', tmplt_external_id) ]) if tmplt: response = http.Response(template=tmplt_external_id, qcontext=vals) return response.render() else: return False else: domain = [('website_id', 'in', (False, request.website.get_current_website().id)), ('parent_id', '=', False)] category = request.env['product.public.category'].sudo( ).search(domain, limit=slider_obj.slider_limit) return request.env.ref( "emipro_theme_base.theme_category_carousel").render( {'object': category})
class TestWebsiteSaleCheckoutAddress(eagle.tests.TransactionCase): ''' The goal of this method class is to test the address management on the checkout (new/edit billing/shipping, company_id, website_id..). ''' def setUp(self): super(TestWebsiteSaleCheckoutAddress, self).setUp() self.website = self.env['website'].browse(1) self.country_id = self.env['res.country'].search([], limit=1).id self.WebsiteSaleController = WebsiteSale() self.default_address_values = { 'name': 'a res.partner address', 'email': '*****@*****.**', 'street': 'ooo', 'city': 'ooo', 'country_id': self.country_id, 'submitted': 1, } def _create_so(self, partner_id=None): return self.env['sale.order'].create({ 'partner_id': partner_id, 'website_id': self.website.id, 'order_line': [(0, 0, { 'product_id': self.env['product.product'].create({ 'name': 'Product A', 'list_price': 100 }).id, 'name': 'Product A', })] }) def _get_last_address(self, partner): ''' Useful to retrieve the last created shipping address ''' return partner.child_ids.sorted('id', reverse=True)[0] # TEST WEBSITE def test_01_create_shipping_address_specific_user_account(self): ''' Ensure `website_id` is correctly set (specific_user_account) ''' p = self.env.user.partner_id so = self._create_so(p.id) with MockRequest(self.env, website=self.website, sale_order_id=so.id): self.WebsiteSaleController.address(**self.default_address_values) self.assertFalse( self._get_last_address(p).website_id, "New shipping address should not have a website set on it (no specific_user_account)." ) self.website.specific_user_account = True self.WebsiteSaleController.address(**self.default_address_values) self.assertEqual( self._get_last_address(p).website_id, self.website, "New shipping address should have a website set on it (specific_user_account)." ) # TEST COMPANY def _setUp_multicompany_env(self): ''' Have 2 companies A & B. Have 1 website 1 which company is B Have admin on company A ''' self.company_a = self.env['res.company'].create({ 'name': 'Company A', }) self.company_b = self.env['res.company'].create({ 'name': 'Company B', }) self.company_c = self.env['res.company'].create({ 'name': 'Company C', }) self.website.company_id = self.company_b self.env.user.company_id = self.company_a self.demo_user = self.env.ref('base.user_demo') self.demo_user.company_ids += self.company_c self.demo_user.company_id = self.company_c self.demo_partner = self.demo_user.partner_id def test_02_demo_address_and_company(self): ''' This test ensure that the company_id of the address (partner) is correctly set and also, is not wrongly changed. eg: new shipping should use the company of the website and not the one from the admin, and editing a billing should not change its company. ''' self._setUp_multicompany_env() so = self._create_so(self.demo_partner.id) env = api.Environment(self.env.cr, self.demo_user.id, {}) # change also website env for `sale_get_order` to not change order partner_id with MockRequest(env, website=self.website.with_env(env), sale_order_id=so.id): # 1. Logged in user, new shipping self.WebsiteSaleController.address(**self.default_address_values) new_shipping = self._get_last_address(self.demo_partner) self.assertTrue( new_shipping.company_id != self.env.user.company_id, "Logged in user new shipping should not get the company of the sudo() neither the one from it's partner.." ) self.assertEqual(new_shipping.company_id, self.website.company_id, ".. but the one from the website.") # 2. Logged in user, edit billing self.default_address_values['partner_id'] = self.demo_partner.id self.WebsiteSaleController.address(**self.default_address_values) self.assertEqual( self.demo_partner.company_id, self.company_c, "Logged in user edited billing (the partner itself) should not get its company modified." ) def test_03_public_user_address_and_company(self): ''' Same as test_02 but with public user ''' self._setUp_multicompany_env() so = self._create_so(self.website.user_id.partner_id.id) env = api.Environment(self.env.cr, self.website.user_id.id, {}) # change also website env for `sale_get_order` to not change order partner_id with MockRequest(env, website=self.website.with_env(env), sale_order_id=so.id): # 1. Public user, new billing self.default_address_values['partner_id'] = -1 self.WebsiteSaleController.address(**self.default_address_values) new_partner = so.partner_id self.assertNotEqual( new_partner, self.website.user_id.partner_id, "New billing should have created a new partner and assign it on the SO" ) self.assertEqual( new_partner.company_id, self.website.company_id, "The new partner should get the company of the website") # 2. Public user, edit billing self.default_address_values['partner_id'] = new_partner.id self.WebsiteSaleController.address(**self.default_address_values) self.assertEqual( new_partner.company_id, self.website.company_id, "Public user edited billing (the partner itself) should not get its company modified." )
def setUp(self): super().setUp() self.website = self.env['website'].browse(1) self.WebsiteSaleController = WebsiteSale() self.cookies = {}