diff --git a/backend/entities/factory.py b/backend/entities/factory.py new file mode 100644 index 000000000..7f3f6645b --- /dev/null +++ b/backend/entities/factory.py @@ -0,0 +1,156 @@ +import datetime +import random + +import factory + +from .models import ( + Group, + GroupEvent, + GroupMember, + GroupResource, + GroupTopic, + Organization, + OrganizationApplication, + OrganizationApplicationStatus, + OrganizationEvent, + OrganizationMember, + OrganizationResource, + OrganizationTask, + OrganizationTopic, +) + + +class OrganizationFactory(factory.django.DjangoModelFactory): + class Meta: + model = Organization + + name = factory.Faker("word") + tagline = factory.Faker("word") + location = factory.Faker("address") + status = factory.Faker("word") + description = factory.Faker("paragraph") + members = factory.List([factory.Faker("name") for _ in range(10)]) + supporters = factory.List([factory.Faker("name") for _ in range(10)]) + images_url = factory.List([factory.Faker("word") for _ in range(10)]) + topics = factory.List([factory.Faker("word") for _ in range(10)]) + social_accounts = factory.List([factory.Faker("word") for _ in range(10)]) + total_flags = random.randint(1, 100) + created_by = factory.SubFactory("authentication.factories.UserFactory") + high_risk = random.choice([True, False]) + creation_date = factory.LazyFunction(datetime.datetime.now) + deletion_date = factory.LazyFunction(datetime.datetime.now) + + +class OrganizationApplicationStatusFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationApplicationStatus + + status_name = factory.Faker("word") + + +class OrganizationApplicationFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationApplication + + org_id = factory.SubFactory(OrganizationFactory) + status = factory.SubFactory(OrganizationApplicationStatusFactory) + orgs_in_favor = factory.List( + [factory.Faker("word") for _ in range(10)] + ) # orgs_in_favor + orgs_against = factory.List( + [factory.Faker("word") for _ in range(10)] + ) # orgs_against + creation_date = factory.LazyFunction(datetime.datetime.now) + status_update = factory.LazyFunction(datetime.datetime.now) + + +class OrganizationEventFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationEvent + + org_id = factory.SubFactory(OrganizationFactory) + event_id = factory.SubFactory("events.factories.EventFactory") + + +class OrganizationMemberFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationMember + + org_id = factory.SubFactory(OrganizationFactory) + user_id = factory.SubFactory("authentication.factories.UserFactory") + is_owner = random.choice([True, False]) + is_admin = random.choice([True, False]) + is_comms = random.choice([True, False]) + + +class OrganizationResourceFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationResource + + org_id = factory.SubFactory(OrganizationFactory) + resource_id = factory.SubFactory("content.factories.ResourceFactory") + + +class GroupFactory(factory.django.DjangoModelFactory): + class Meta: + model = Group + + org_id = factory.SubFactory(OrganizationFactory) + name = factory.Faker("word") + tagline = factory.Faker("word") + description = factory.Faker("paragraph") + social_accounts = factory.List([factory.Faker("word") for _ in range(10)]) + total_flags = random.randint(1, 100) + creation_by = factory.SubFactory("authentication.factories.UserFactory") + creation_date = factory.LazyFunction(datetime.datetime.now) + deletion_date = factory.LazyFunction(datetime.datetime.now) + + +class OrganizationTaskFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationTask + + org_id = factory.SubFactory(OrganizationFactory) + task_id = factory.SubFactory("content.factories.TaskFactory") + group_id = factory.SubFactory(GroupFactory) + + +class OrganizationTopicFactory(factory.django.DjangoModelFactory): + class Meta: + model = OrganizationTopic + + org_id = factory.SubFactory(OrganizationFactory) + topic_id = factory.SubFactory("content.factories.TopicFactory") + + +class GroupEventFactory(factory.django.DjangoModelFactory): + class Meta: + model = GroupEvent + + group_id = factory.SubFactory(GroupFactory) + event_id = factory.SubFactory("events.factories.EventFactory") + + +class GroupMemberFactory(factory.django.DjangoModelFactory): + class Meta: + model = GroupMember + + group_id = factory.SubFactory(GroupFactory) + user_id = factory.SubFactory("authentication.UserFactory") + is_admin = random.choice([True, False]) + + +class GroupResourceFactory(factory.django.DjangoModelFactory): + class Meta: + model = GroupResource + + group_id = factory.SubFactory(GroupFactory) + resource_id = factory.SubFactory("content.factories.ResourceFactory") + + +class GroupTopicFactory(factory.django.DjangoModelFactory): + class Meta: + model = GroupTopic + + group_id = factory.SubFactory(GroupFactory) + topic_id = factory.SubFactory("content.factories.Topic") diff --git a/backend/entities/tests.py b/backend/entities/tests.py index 7ce503c2d..9d8452a6f 100644 --- a/backend/entities/tests.py +++ b/backend/entities/tests.py @@ -1,3 +1,32 @@ -from django.test import TestCase +from .factory import OrganizationFactory, OrganizationApplicationFactory, OrganizationApplicationStatusFactory, OrganizationEventFactory, OrganizationMemberFactory, OrganizationResourceFactory, GroupFactory, OrganizationTaskFactory, OrganizationTopicFactory, GroupEventFactory, GroupMemberFactory, GroupResourceFactory, GroupTopic +import pytest -# Create your tests here. + +def test_str_methods() -> None: + organization = OrganizationFactory.build() + organization_application = OrganizationApplicationFactory.build() + organization_application_status = OrganizationApplicationStatusFactory.build() + organization_event = OrganizationEventFactory.build() + organization_member = OrganizationMemberFactory.build() + organization_resource = OrganizationResourceFactory.build() + organization_task = OrganizationTaskFactory.build() + organization_topic = OrganizationTopicFactory.build() + group = GroupFactory.build() + group_event = GroupEventFactory.build() + group_member = GroupMemberFactory.build() + group_resource = GroupResourceFactory.build() + group_topic = GroupTopic.build() + + assert str(organization) == organization.name + assert str(organization_application) == str(organization_application.id) + assert str(organization_application_status) == str(organization_application_status.id) + assert str(organization_event) == str(organization_event.id) + assert str(organization_member) == str(organization_member.id) + assert str(organization_resource) == str(organization_resource.id) + assert str(organization_task) == str(organization_task.id) + assert str(organization_topic) == str(organization_topic.id) + assert str(group) == group.name + assert str(group_event) == str(group_event.id) + assert str(group_member) == str(group_member.id) + assert str(group_resource) == str(group_resource.id) + assert str(group_topic) == str(group_topic.id)