def test_invalid_submission(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = 'ATU66688999'

        submission = { 'basket': basket,
                       'shipping_address': address }

        expected_rate = D('0.20')

        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)

        address.vatin = 'ATU66688202'
        address.line1 = 'hastexo'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)

        address.vatin = ''
        address.line1 = 'hastexo Professional Services GmbH'
        address.phone_number = '+49 9 999 9999'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)
Example #2
0
    def test_valid_user(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        request = Mock()
        request.user = Mock()
        request.user.addresses = Mock()
        request.user.addresses.order_by = Mock(return_value=[address])
        request.user.is_authenticated = Mock(return_value=True)

        selector = PerUserVATSelector()
        strategy = selector.strategy(request=request)

        result_rate = strategy.get_rate(None, None)
        self.assertEqual(result_rate, D('0.20'))

        address.vatin = 'ATU66688202'
        result_rate = strategy.get_rate(None, None)
        self.assertEqual(result_rate, D('0.00'))
    def test_basket_with_vatin_no_reverse_charge(self):
        basket = Mock()
        line = Mock()
        line.line_price_excl_tax_incl_discounts = D('100.00')
        line.purchase_info = Mock()
        line.purchase_info.price = Mock()
        line.quantity = 1
        basket.all_lines = Mock(return_value=[line])
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = 'ATU66688202'
        shipping_charge = Mock()
        shipping_charge.excl_tax = D('10.00')

        submission = { 'basket': basket,
                       'shipping_address': address,
                       'shipping_charge': shipping_charge }

        # Even if they've given us a VATIN, if they're in the same
        # country as the store, VAT still applies.
        vat.apply_to(submission)
        self.assertEqual(shipping_charge.tax, D('2.00'))
        self.assertEqual(line.purchase_info.price.tax, D('20.00'))
Example #4
0
    def test_valid_submission(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = { 'basket': basket,
                       'shipping_address': address }

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))

        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.00'))

        address.vatin = ''
        address.line1 = 'HASTEXO PROFESSIONAL SERVICES GMBH'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))
    def test_valid_user_noreverse_charge(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        request = Mock()
        request.user = Mock()
        request.user.addresses = Mock()
        request.user.addresses.order_by = Mock(return_value=[address])
        request.user.is_authenticated = Mock(return_value=True)

        selector = PerUserVATSelector()
        strategy = selector.strategy(request=request)

        result_rate = strategy.get_rate(None, None)
        self.assertEqual(result_rate,
                         D('0.20'))

        address.vatin = 'ATU66688202'
        # Valid VATIN, but same country as store: should return normal
        # VAT rate.
        result_rate = strategy.get_rate(None, None)
        self.assertEqual(result_rate,
                         D('0.20'))
    def test_basket_with_vatin_reverse_charge(self):
        basket = Mock()
        line = Mock()
        line.line_price_excl_tax_incl_discounts = D('100.00')
        line.purchase_info = Mock()
        line.purchase_info.price = Mock()
        line.quantity = 1
        basket.all_lines = Mock(return_value=[line])
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = 'ATU66688202'
        shipping_charge = Mock()
        shipping_charge.excl_tax = D('10.00')

        submission = { 'basket': basket,
                       'shipping_address': address,
                       'shipping_charge': shipping_charge }

        # We're pretending we're a store in Germany. Then we can do
        # reverse charge.
        vat.apply_to(submission)
        self.assertEqual(shipping_charge.tax, D('0.00'))
        self.assertEqual(line.purchase_info.price.tax, D('0.00'))
Example #7
0
    def test_valid_submission_reverse_charge(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = {'basket': basket, 'shipping_address': address}

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))

        # We're pretending we're a store in Germany. Then we can do
        # reverse charge.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.00'))
        # However, if we're using an empty VATIN, the regular VAT
        # rate applies again.
        address.vatin = ''
        address.line1 = 'HASTEXO PROFESSIONAL SERVICES GMBH'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))
Example #8
0
    def test_invalid_submission(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = 'ATU66688999'

        submission = {'basket': basket, 'shipping_address': address}

        expected_rate = D('0.20')

        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)

        address.vatin = 'ATU66688202'
        address.line1 = 'hastexo'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)

        address.vatin = ''
        address.line1 = 'hastexo Professional Services GmbH'
        address.phone_number = '+49 9 999 9999'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_submission(submission)
Example #9
0
    def test_basket_with_vatin(self):
        basket = Mock()
        line = Mock()
        line.line_price_excl_tax_incl_discounts = D('100.00')
        line.purchase_info = Mock()
        line.purchase_info.price = Mock()
        line.quantity = 1
        basket.all_lines = Mock(return_value=[line])
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = 'ATU66688202'
        shipping_charge = Mock()
        shipping_charge.excl_tax = D('10.00')

        submission = {
            'basket': basket,
            'shipping_address': address,
            'shipping_charge': shipping_charge
        }

        vat.apply_to(submission)
        self.assertEqual(shipping_charge.tax, D('0.00'))
        self.assertEqual(line.purchase_info.price.tax, D('0.00'))
Example #10
0
    def test_valid_submission_reverse_charge(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = { 'basket': basket,
                       'shipping_address': address }

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))

        # We're pretending we're a store in Germany. Then we can do
        # reverse charge.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.00'))
        # However, if we're using an empty VATIN, the regular VAT
        # rate applies again.
        address.vatin = ''
        address.line1 = 'HASTEXO PROFESSIONAL SERVICES GMBH'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))
Example #11
0
    def test_basket_with_tax(self):
        basket = Mock()
        line = Mock()
        line.line_price_excl_tax_incl_discounts = D('100.00')
        line.purchase_info = Mock()
        line.purchase_info.price = Mock()
        line.quantity = 1
        basket.all_lines = Mock(return_value=[line])
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.vatin = ''
        shipping_charge = Mock()
        shipping_charge.excl_tax = D('10.00')

        submission = { 'basket': basket,
                       'shipping_address': address,
                       'shipping_charge': shipping_charge }

        vat.apply_to(submission)
        self.assertEqual(shipping_charge.tax, D('2.00'))
        self.assertEqual(line.purchase_info.price.tax, D('20.00'))
Example #12
0
 def test_should_allow_request_from_country_other_than_of_organization(self):
     request = Mock(spec=HttpRequest)
     request.user = Mock()
     request.META = {'REMOTE_ADDR': "someIp"}
     with patch('datawinners.xforms.views.Organization') as organization_mock:
         mock_organization = Mock()
         mock_organization.country = Country('IN')
         objects_mock = Mock()
         objects_mock.get.return_value = mock_organization
         organization_mock.objects = objects_mock
         with patch.object(GeoIP, 'country_code') as geo_ip_mock:
             geo_ip_mock.return_value = Country('MG')
             self.assertEquals(dummy_form_list(request).status_code, 200)
Example #13
0
    def test_invalid_user(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+49 911 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_user(user)

        address.vatin = 'ATU66688999'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_user(user)
Example #14
0
    def test_invalid_user(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+49 911 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_user(user)

        address.vatin = 'ATU66688999'
        with self.assertRaises(vat.VATAssessmentException):
            result_rate = vat.lookup_vat_for_user(user)
Example #15
0
    def test_valid_user(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.20'))

        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.00'))
Example #16
0
    def test_valid_user(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                         D('0.20'))

        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                         D('0.00'))
Example #17
0
    def test_valid_user_reverse_charge(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        # No VATIN, different country? Standard rate applies.
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.20'))

        # Valid VATIN, different country? Reverse charge applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.00'))
Example #18
0
    def test_valid_submission_no_reverse_charge(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = {'basket': basket, 'shipping_address': address}

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))

        # Do they have a VATIN? Doesn't matter if they're in the same
        # country as the store; VAT still applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))
Example #19
0
    def test_valid_user_no_reverse_charge(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        # No VATIN? Standard rate applies.
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.20'))

        # Do they have a VATIN? Doesn't matter if they're in the same
        # country as the store; VAT still applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate, D('0.20'))
Example #20
0
    def test_valid_user_reverse_charge(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        # No VATIN, different country? Standard rate applies.
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                         D('0.20'))

        # Valid VATIN, different country? Reverse charge applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                           D('0.00'))
Example #21
0
    def test_valid_submission(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = {'basket': basket, 'shipping_address': address}

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))

        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.00'))

        address.vatin = ''
        address.line1 = 'HASTEXO PROFESSIONAL SERVICES GMBH'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate, D('0.20'))
Example #22
0
    def test_valid_user_no_reverse_charge(self):
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''
        user = Mock()
        user.addresses = Mock()
        user.addresses.order_by = Mock(return_value=[address])

        # No VATIN? Standard rate applies.
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                         D('0.20'))

        # Do they have a VATIN? Doesn't matter if they're in the same
        # country as the store; VAT still applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_user(user)
        self.assertEqual(result_rate,
                         D('0.20'))
Example #23
0
    def test_valid_submission_no_reverse_charge(self):
        basket = Mock()
        address = Mock()
        address.country = Mock()
        address.country.code = 'AT'
        address.line4 = 'Vienna'
        address.postcode = '1010'
        address.phone_number = '+43 1 234 5678'
        address.line1 = 'hastexo Professional Services GmbH'
        address.vatin = ''

        submission = { 'basket': basket,
                       'shipping_address': address }

        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))

        # Do they have a VATIN? Doesn't matter if they're in the same
        # country as the store; VAT still applies.
        address.vatin = 'ATU66688202'
        result_rate = vat.lookup_vat_for_submission(submission)
        self.assertEqual(result_rate,
                         D('0.20'))
Example #24
0
#                                                                     #
# ################################################################### #

import time
import unittest2

from mock import Mock
from mockito import when, unstub
from b3.config import MainConfig
from b3.config import CfgConfigParser
from b3.plugins.admin import AdminPlugin
from b3.plugins.countryfilter import CountryfilterPlugin
from tests import logging_disabled

LOCATION_MIKE = Mock()
LOCATION_MIKE.country = 'Italy'
LOCATION_MIKE.region = 'Lazio'
LOCATION_MIKE.city = 'Rome'
LOCATION_MIKE.cc = 'IT'
LOCATION_MIKE.rc = '07'
LOCATION_MIKE.isp = 'Fastweb'
LOCATION_MIKE.timezone = 'Europe/Rome'
LOCATION_MIKE.lat = 41.9
LOCATION_MIKE.lon = 12.4833
LOCATION_MIKE.zipcode = 0o0100

LOCATION_BILL = Mock()
LOCATION_BILL.country = 'United States'
LOCATION_BILL.region = 'California'
LOCATION_BILL.city = 'Mountain View'
LOCATION_BILL.cc = 'US'
Example #25
0
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

import time
import unittest2

from mock import Mock
from mockito import when, unstub
from b3.config import MainConfig
from b3.config import CfgConfigParser
from b3.plugins.admin import AdminPlugin
from b3.plugins.countryfilter import CountryfilterPlugin
from tests import logging_disabled


LOCATION_MIKE = Mock()
LOCATION_MIKE.country = 'Italy'
LOCATION_MIKE.region = 'Lazio'
LOCATION_MIKE.city = 'Rome'
LOCATION_MIKE.cc = 'IT'
LOCATION_MIKE.rc = '07'
LOCATION_MIKE.isp = 'Fastweb'
LOCATION_MIKE.timezone = 'Europe/Rome'
LOCATION_MIKE.lat = 41.9
LOCATION_MIKE.lon = 12.4833
LOCATION_MIKE.zipcode = 00100

LOCATION_BILL = Mock()
LOCATION_BILL.country = 'United States'
LOCATION_BILL.region = 'California'
LOCATION_BILL.city = 'Mountain View'
LOCATION_BILL.cc = 'US'