Exemplo n.º 1
0
def test__idbl_data_serializer__valid():
    """Tests that model is properly created via iDBL serializer."""
    # Get initial model counts
    drug_count = models.Drug.objects.count()
    price_count = models.Price.objects.count()
    clients_count = models.Clients.objects.count()
    coverage_count = models.CoverageCriteria.objects.count()
    special_count = models.SpecialAuthorization.objects.count()

    # Create serializer data
    idbl_data = create_idbl_data()

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid
    assert serializer.is_valid()

    # Save the data
    serializer.save()

    # Confirm data was properly added (by model counts)
    assert drug_count + 1 == models.Drug.objects.count()
    assert price_count + 1 == models.Price.objects.count()
    assert clients_count + 1 == models.Clients.objects.count()
    assert coverage_count + 1 == models.CoverageCriteria.objects.count()
    assert special_count + 1 == models.SpecialAuthorization.objects.count()

    # Confirm data to models was properly added
    drug = models.Drug.objects.get(din=idbl_data['din'])

    assert drug == instance
Exemplo n.º 2
0
def test__idbl_data_serializer__valid__special_authorization():
    """Tests handling of just a valid special_authorization."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'special_authorization': [{
            'file_name': 'a',
            'pdf_title': 'b',
        }]
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Save data
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.special_authorizations.count() == 1
    assert price.special_authorizations.last().file_name == 'a'
    assert price.special_authorizations.last().pdf_title == 'b'
Exemplo n.º 3
0
def test__idbl_data_serializer__valid__coverage_criteria():
    """Tests handling of just a valid coverage_criteria."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'coverage_criteria': [{
            'header': 'a',
            'criteria': 'b'
        }]
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Save data
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.coverage_criteria.count() == 1
    assert price.coverage_criteria.last().header == 'a'
    assert price.coverage_criteria.last().criteria == 'b'
Exemplo n.º 4
0
def test__idbl_data_serializer__valid__clients():
    """Tests handling of just a valid coverage_status."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'clients': {
            'group_1': True,
            'group_66': False,
            'group_19823': False,
            'group_19823a': False,
            'group_19824': False,
            'group_20400': False,
            'group_20403': False,
            'group_20514': False,
            'group_22128': False,
            'group_23609': False,
        },
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Save data
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.clients.group_1 is True
    assert price.clients.group_66 is False
Exemplo n.º 5
0
def test__idbl_data_serializer__create_exists():
    """Confirms create method exists."""
    serializer = serializers.iDBLDataSerializer(data={})

    try:
        serializer.is_valid()
        serializer.create(serializer.validated_data)
    except AttributeError:
        assert False

    assert True
Exemplo n.º 6
0
def test__idbl_data_serializer__get_atc_instance__missing():
    """Tests handling of just a valid atc."""
    # Create ATC instances
    models.ATC.objects.create(
        id='A11BC22',
        atc_1='A',
        atc_1_text='description 1',
        atc_2='A11',
        atc_2_text='description 2',
        atc_3='A11B',
        atc_3_text='description 3',
        atc_4='A11BC',
        atc_4_text='description 4',
        atc_5='A11BC22',
        atc_5_text='description 5',
    )

    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'atc': 'A11BC33',
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid and save serializer
    serializer.is_valid()
    serializer.save()

    # Confirm new ATC was made with proper details
    new_atc = models.ATC.objects.get(id='A11BC33')
    assert new_atc.atc_1 == 'A'
    assert new_atc.atc_1_text == 'description 1'
    assert new_atc.atc_2 == 'A11'
    assert new_atc.atc_2_text == 'description 2'
    assert new_atc.atc_3 == 'A11B'
    assert new_atc.atc_3_text == 'description 3'
    assert new_atc.atc_4 == 'A11BC'
    assert new_atc.atc_4_text == 'description 4'
    assert new_atc.atc_5 == 'A11BC33'
    assert new_atc.atc_5_text is None
Exemplo n.º 7
0
def test__idbl_data_serializer__valid__din():
    """Tests handling of just a valid DIN."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid and save serializer
    serializer.is_valid()
    drug = serializer.save()

    assert drug.din == idbl_data['din']
Exemplo n.º 8
0
def test__idbl_data_serializer__valid__schedule():
    """Tests handling of just a valid schedule."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'schedule': 'a',
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Save the data
    serializer.is_valid()
    drug = serializer.save()

    assert drug.schedule == 'a'
Exemplo n.º 9
0
def test__idbl_data_serializer__max_lengths_match():
    """Tests that serializer and model max lengths match."""
    serializer = serializers.iDBLDataSerializer()
    Drug = models.Drug
    Price = models.Price
    PTC = models.PTC
    ATC = models.ATC

    bsrf_max_length = (Drug._meta.get_field('brand_name').max_length +
                       Drug._meta.get_field('strength').max_length +
                       Drug._meta.get_field('route').max_length +
                       Drug._meta.get_field('dosage_form').max_length)

    assert serializer['din'].max_length == Drug._meta.get_field(
        'din').max_length
    assert serializer['bsrf'].max_length == bsrf_max_length
    assert serializer['ptc'].max_length == PTC._meta.get_field('id').max_length
    assert serializer['atc'].max_length == ATC._meta.get_field('id').max_length
    assert serializer['unit_price'].max_digits == Price._meta.get_field(
        'unit_price').max_digits
    assert serializer['unit_price'].decimal_places == Price._meta.get_field(
        'unit_price').decimal_places
    assert serializer['lca_price'].max_digits == Price._meta.get_field(
        'lca_price').max_digits
    assert serializer['lca_price'].decimal_places == Price._meta.get_field(
        'lca_price').decimal_places
    assert serializer['mac_price'].max_digits == Price._meta.get_field(
        'mac_price').max_digits
    assert serializer['mac_price'].decimal_places == Price._meta.get_field(
        'mac_price').decimal_places
    assert serializer['mac_text'].max_length == Price._meta.get_field(
        'mac_text').max_length
    assert serializer['unit_issue'].max_length == Price._meta.get_field(
        'unit_issue').max_length
    assert serializer['manufacturer'].max_length == Drug._meta.get_field(
        'manufacturer').max_length
    assert serializer['schedule'].max_length == Drug._meta.get_field(
        'schedule').max_length
    assert serializer['coverage_status'].max_length == Price._meta.get_field(
        'coverage_status').max_length
Exemplo n.º 10
0
def test__idbl_data_serializer__valid__interchangeable():
    """Tests handling of just a valid interchangeable."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'interchangeable': True,
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Save data
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.interchangeable is True
Exemplo n.º 11
0
def test__idbl_data_serializer__valid__lca_price():
    """Tests handling of just a valid lca_price."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'lca_price': 0.0001,
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid and save serializer
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.lca_price == Decimal('0.0001')
Exemplo n.º 12
0
def test__idbl_data_serializer__valid__date_listed():
    """Tests handling of just a valid date_listed."""
    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'date_listed': '2019-01-01',
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid and save serializer
    serializer.is_valid()
    drug = serializer.save()

    # Get the price model for this drug
    price = drug.prices.last()

    assert price.date_listed == datetime(2019, 1, 1).date()
Exemplo n.º 13
0
def test__idbl_data_serializer__valid__atc():
    """Tests handling of just a valid atc."""
    # Create ATC instance
    atc = models.ATC.objects.create(id='1234')

    # Create serializer data
    idbl_data = {
        'abc_id': 1,
        'din': '00000001',
        'atc': atc.id,
    }

    # Create initial instance to work from
    instance = models.Drug.objects.create(din=idbl_data['din'])

    serializer = serializers.iDBLDataSerializer(instance=instance,
                                                data=idbl_data)

    # Confirm data is valid and save serializer
    serializer.is_valid()
    drug = serializer.save()

    assert drug.atc == atc