"""Tests for the barcode_generator module.""" from unittest import mock from flexmock import flexmock from salessheets.constants import barcode from salessheets.constants import errors from salessheets.utils import barcode_generator def test_generating_error(): """Test generate_barcode with wrong upc.""" test_barcode = 'some_wrong_te' result = barcode_generator.generate_barcode(test_barcode) assert result.status == 400 @mock.patch('PIL.Image.Image.save', new=mock.MagicMock()) def test_generating_success(): """Test generate_barcode with successful result.""" test_barcode = '788581014974' result = barcode_generator.generate_barcode(test_barcode) assert result.status == 200 @mock.patch('PIL.Image.Image.save', new=mock.MagicMock()) def test_convert_upc_to_str_generating_success(): """Test upc is converted to str inside the generate_barcode.""" test_barcode = 788581014974 (flexmock(barcode_generator) .should_call('validate_barcode_data') .with_args(str) .once()) result = barcode_generator.generate_barcode(test_barcode) assert result.status == 200 def test_generating_is_not_numeric_barcode(): """Test generate_barcode with wrong length barcode.""" test_barcode = '123asd123asd' result = barcode_generator.generate_barcode(test_barcode) assert result.errors['code'] == errors.ERROR_BARCODE_IS_NOT_NUMERIC def test_generating_wrong_length_barcode(): """Test generate_barcode with wrong length barcode.""" test_barcode = '123456789012345' result = barcode_generator.generate_barcode(test_barcode) assert result.errors['code'] == errors.ERROR_BARCODE_INVALID_LENGTH @mock.patch('PIL.Image.Image.save', new=mock.MagicMock()) def test_generating_upc_a_barcode(): """Test generate_barcode with upc-a barcode in result.""" test_barcode = '788581014974' result = barcode_generator.generate_barcode(test_barcode) assert result.message[barcode.BARCODE_TYPE] == barcode.UPC_A @mock.patch('PIL.Image.Image.save', new=mock.MagicMock()) def test_generating_ean_13_barcode(): """Test generate_barcode with ean-13 barcode in result.""" test_barcode = '7885810149741' result = barcode_generator.generate_barcode(test_barcode) assert result.message[barcode.BARCODE_TYPE] == barcode.EAN_13