Skip to content

Commit

Permalink
Merge pull request #538 from marcosquadross/dev
Browse files Browse the repository at this point in the history
Create factories and tests for the entities
  • Loading branch information
andrewtavis authored Nov 17, 2023
2 parents 2c6ab54 + beac424 commit 4ee0bb6
Show file tree
Hide file tree
Showing 2 changed files with 187 additions and 2 deletions.
156 changes: 156 additions & 0 deletions backend/entities/factory.py
Original file line number Diff line number Diff line change
@@ -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")
33 changes: 31 additions & 2 deletions backend/entities/tests.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 4ee0bb6

Please sign in to comment.