Coverage for quality/factories.py: 100%

37 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-26 15:42 +0000

1from string import ascii_uppercase 

2from typing import Any 

3 

4import factory 

5 

6from .models import Channel, Check, Network, Operator, Station 

7 

8 

9class OperatorFactory(factory.django.DjangoModelFactory): 

10 class Meta: 

11 model = Operator 

12 

13 agency = factory.Faker("bs") 

14 website = factory.Faker("url") 

15 

16 @factory.post_generation 

17 def stations(self, create: Any, extracted: Any, **__kwargs: Any) -> None: 

18 if not create or not extracted: 

19 # Simple build, or nothing to add, do nothing. 

20 return 

21 

22 # Add the iterable of stations using bulk addition 

23 self.stations.add(*extracted) 

24 

25 

26class NetworkFactory(factory.django.DjangoModelFactory): 

27 class Meta: 

28 model = Network 

29 django_get_or_create = ("code",) 

30 

31 code = factory.Faker("lexify", letters=ascii_uppercase, text="??") 

32 description = factory.Faker("text") 

33 

34 

35class StationFactory(factory.django.DjangoModelFactory): 

36 class Meta: 

37 model = Station 

38 django_get_or_create = ("code",) 

39 

40 code = factory.Faker("lexify", letters=ascii_uppercase, text="????") 

41 network = factory.SubFactory(NetworkFactory) 

42 

43 

44class ChannelFactory(factory.django.DjangoModelFactory): 

45 class Meta: 

46 model = Channel 

47 

48 code = factory.Faker("lexify", letters=ascii_uppercase, text="???") 

49 location = factory.Faker("numerify", text="##") 

50 station = factory.SubFactory(StationFactory) 

51 

52 

53class CheckFactory(factory.django.DjangoModelFactory): 

54 class Meta: 

55 model = Check 

56 

57 date = factory.Faker("date") 

58 channel = factory.SubFactory(ChannelFactory)