mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 17:26:10 -06:00
#9047 - Add tests, GraphQL schema, add provider to serializer and re-order provider on model form.
This commit is contained in:
parent
850e77395e
commit
2970fde873
@ -48,11 +48,12 @@ class ProviderSerializer(NetBoxModelSerializer):
|
|||||||
|
|
||||||
class ProviderAccountSerializer(NetBoxModelSerializer):
|
class ProviderAccountSerializer(NetBoxModelSerializer):
|
||||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provideraccount-detail')
|
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provideraccount-detail')
|
||||||
|
provider = NestedProviderSerializer()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProviderAccount
|
model = ProviderAccount
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'url', 'display', 'name', 'account', 'description', 'comments', 'tags', 'custom_fields',
|
'id', 'url', 'display', 'provider', 'name', 'account', 'description', 'comments', 'tags', 'custom_fields',
|
||||||
'created', 'last_updated',
|
'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class ProviderAccountForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ProviderAccount
|
model = ProviderAccount
|
||||||
fields = [
|
fields = [
|
||||||
'name', 'account', 'provider', 'description', 'comments', 'tags',
|
'provider', 'name', 'account', 'description', 'comments', 'tags',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,5 +17,8 @@ class CircuitsQuery(graphene.ObjectType):
|
|||||||
provider = ObjectField(ProviderType)
|
provider = ObjectField(ProviderType)
|
||||||
provider_list = ObjectListField(ProviderType)
|
provider_list = ObjectListField(ProviderType)
|
||||||
|
|
||||||
|
provider_account = ObjectField(ProviderAccountType)
|
||||||
|
provider_account_list = ObjectListField(ProviderAccountType)
|
||||||
|
|
||||||
provider_network = ObjectField(ProviderNetworkType)
|
provider_network = ObjectField(ProviderNetworkType)
|
||||||
provider_network_list = ObjectListField(ProviderNetworkType)
|
provider_network_list = ObjectListField(ProviderNetworkType)
|
||||||
|
@ -10,6 +10,7 @@ __all__ = (
|
|||||||
'CircuitType',
|
'CircuitType',
|
||||||
'CircuitTypeType',
|
'CircuitTypeType',
|
||||||
'ProviderType',
|
'ProviderType',
|
||||||
|
'ProviderAccountType',
|
||||||
'ProviderNetworkType',
|
'ProviderNetworkType',
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -45,6 +46,14 @@ class ProviderType(NetBoxObjectType, ContactsMixin):
|
|||||||
filterset_class = filtersets.ProviderFilterSet
|
filterset_class = filtersets.ProviderFilterSet
|
||||||
|
|
||||||
|
|
||||||
|
class ProviderAccountType(NetBoxObjectType):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ProviderAccount
|
||||||
|
fields = '__all__'
|
||||||
|
filterset_class = filtersets.ProviderAccountFilterSet
|
||||||
|
|
||||||
|
|
||||||
class ProviderNetworkType(NetBoxObjectType):
|
class ProviderNetworkType(NetBoxObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -197,6 +197,46 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ProviderAccountTest(APIViewTestCases.APIViewTestCase):
|
||||||
|
model = ProviderAccount
|
||||||
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
providers = (
|
||||||
|
Provider(name='Provider 1', slug='provider-1'),
|
||||||
|
Provider(name='Provider 2', slug='provider-2'),
|
||||||
|
)
|
||||||
|
Provider.objects.bulk_create(providers)
|
||||||
|
|
||||||
|
provider_accounts = (
|
||||||
|
ProviderNetwork(name='Provider Account 1', provider=providers[0]),
|
||||||
|
ProviderNetwork(name='Provider Account 2', provider=providers[0]),
|
||||||
|
ProviderNetwork(name='Provider Account 3', provider=providers[0]),
|
||||||
|
)
|
||||||
|
ProviderNetwork.objects.bulk_create(provider_accounts)
|
||||||
|
|
||||||
|
cls.create_data = [
|
||||||
|
{
|
||||||
|
'name': 'Provider Account 4',
|
||||||
|
'provider': providers[0].pk,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'Provider Account 5',
|
||||||
|
'provider': providers[0].pk,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'Provider Account 6',
|
||||||
|
'provider': providers[0].pk,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
cls.bulk_update_data = {
|
||||||
|
'provider': providers[1].pk,
|
||||||
|
'description': 'New description',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class ProviderNetworkTest(APIViewTestCases.APIViewTestCase):
|
class ProviderNetworkTest(APIViewTestCases.APIViewTestCase):
|
||||||
model = ProviderNetwork
|
model = ProviderNetwork
|
||||||
brief_fields = ['display', 'id', 'name', 'url']
|
brief_fields = ['display', 'id', 'name', 'url']
|
||||||
|
@ -445,3 +445,40 @@ class ProviderNetworkTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
params = {'provider': [providers[0].slug, providers[1].slug]}
|
params = {'provider': [providers[0].slug, providers[1].slug]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
|
||||||
|
class ProviderAccountTestCase(TestCase, ChangeLoggedFilterSetTests):
|
||||||
|
queryset = ProviderAccount.objects.all()
|
||||||
|
filterset = ProviderAccountFilterSet
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
|
||||||
|
providers = (
|
||||||
|
Provider(name='Provider 1', slug='provider-1'),
|
||||||
|
Provider(name='Provider 2', slug='provider-2'),
|
||||||
|
Provider(name='Provider 3', slug='provider-3'),
|
||||||
|
)
|
||||||
|
Provider.objects.bulk_create(providers)
|
||||||
|
|
||||||
|
provider_accounts = (
|
||||||
|
ProviderNetwork(name='Provider Account 1', provider=providers[0], description='foobar1'),
|
||||||
|
ProviderNetwork(name='Provider Account 2', provider=providers[1], description='foobar2'),
|
||||||
|
ProviderNetwork(name='Provider Account 3', provider=providers[2]),
|
||||||
|
)
|
||||||
|
ProviderNetwork.objects.bulk_create(provider_accounts)
|
||||||
|
|
||||||
|
def test_name(self):
|
||||||
|
params = {'name': ['Provider Account 1', 'Provider Account 2']}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
def test_description(self):
|
||||||
|
params = {'description': ['foobar1', 'foobar2']}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
def test_provider(self):
|
||||||
|
providers = Provider.objects.all()[:2]
|
||||||
|
params = {'provider_id': [providers[0].pk, providers[1].pk]}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
params = {'provider': [providers[0].slug, providers[1].slug]}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
@ -179,6 +179,57 @@ class CircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ProviderAccountTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||||
|
model = ProviderAccount
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
|
||||||
|
providers = (
|
||||||
|
Provider(name='Provider 1', slug='provider-1'),
|
||||||
|
Provider(name='Provider 2', slug='provider-2'),
|
||||||
|
)
|
||||||
|
Provider.objects.bulk_create(providers)
|
||||||
|
|
||||||
|
provider_accounts = (
|
||||||
|
ProviderNetwork(name='Provider Account 1', provider=providers[0]),
|
||||||
|
ProviderNetwork(name='Provider Account 2', provider=providers[0]),
|
||||||
|
ProviderNetwork(name='Provider Account 3', provider=providers[0]),
|
||||||
|
)
|
||||||
|
|
||||||
|
ProviderNetwork.objects.bulk_create(provider_accounts)
|
||||||
|
|
||||||
|
tags = create_tags('Alpha', 'Bravo', 'Charlie')
|
||||||
|
|
||||||
|
cls.form_data = {
|
||||||
|
'name': 'Provider Account X',
|
||||||
|
'provider': providers[1].pk,
|
||||||
|
'description': 'A new provider network',
|
||||||
|
'comments': 'Longer description goes here',
|
||||||
|
'tags': [t.pk for t in tags],
|
||||||
|
}
|
||||||
|
|
||||||
|
cls.csv_data = (
|
||||||
|
"name,provider,description",
|
||||||
|
"Provider Account 4,Provider 1,Foo",
|
||||||
|
"Provider Account 5,Provider 1,Bar",
|
||||||
|
"Provider Account 6,Provider 1,Baz",
|
||||||
|
)
|
||||||
|
|
||||||
|
cls.csv_update_data = (
|
||||||
|
"id,name,description",
|
||||||
|
f"{provider_accounts[0].pk},Provider Network 7,New description7",
|
||||||
|
f"{provider_accounts[1].pk},Provider Network 8,New description8",
|
||||||
|
f"{provider_accounts[2].pk},Provider Network 9,New description9",
|
||||||
|
)
|
||||||
|
|
||||||
|
cls.bulk_edit_data = {
|
||||||
|
'provider': providers[1].pk,
|
||||||
|
'description': 'New description',
|
||||||
|
'comments': 'New comments',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class ProviderNetworkTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
class ProviderNetworkTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||||
model = ProviderNetwork
|
model = ProviderNetwork
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user