Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP Fancy exports #615

Merged
merged 18 commits into from
Feb 3, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updated fancy graph tests to data provider tests
Theophile-Madet committed Jan 31, 2025
commit 7af034f46d1c9374c1b8f1037f73773599fff5d0
Original file line number Diff line number Diff line change
@@ -4,8 +4,8 @@

from tapir.coop.models import ShareOwner
from tapir.shifts.models import CreateShiftAttendanceTemplateLogEntry
from tapir.statistics.views.fancy_graph.number_of_abcd_members_view import (
NumberOfAbcdMembersAtDateView,
from tapir.statistics.services.data_providers.data_provider_abcd_members import (
DataProviderAbcdMembers,
)
from tapir.utils.tests_utils import (
TapirFactoryTestBase,
@@ -15,7 +15,7 @@
)


class TestNumberOfAbcdMembersView(TapirFactoryTestBase):
class TestDataProviderAbcdMembers(TapirFactoryTestBase):
NOW = datetime.datetime(year=2023, month=4, day=1, hour=12)
REFERENCE_TIME = timezone.make_aware(
datetime.datetime(year=2022, month=6, day=15, hour=12)
@@ -25,36 +25,31 @@ def setUp(self) -> None:
super().setUp()
self.NOW = mock_timezone_now(self, self.NOW)

def test_calculateDatapoint_memberIsAbcdButIsNotWorking_notCounted(self):
def test_getQueryset_memberIsAbcdButIsNotWorking_notIncluded(self):
tapir_user = create_member_that_is_working(self, self.REFERENCE_TIME)
ShareOwner.objects.update(is_investing=True)
create_attendance_template_log_entry_in_the_past(
CreateShiftAttendanceTemplateLogEntry, tapir_user, self.REFERENCE_TIME
)

result = NumberOfAbcdMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderAbcdMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberIsWorkingButIsNotAbcd_notCounted(self):
def test_calculateDatapoint_memberIsWorkingButIsNotAbcd_notIncluded(self):
create_member_that_is_working(self, self.REFERENCE_TIME)

result = NumberOfAbcdMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderAbcdMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberIsWorkingAndAbcd_counted(self):
def test_calculateDatapoint_memberIsWorkingAndAbcd_included(self):
tapir_user = create_member_that_is_working(self, self.REFERENCE_TIME)
create_attendance_template_log_entry_in_the_past(
CreateShiftAttendanceTemplateLogEntry, tapir_user, self.REFERENCE_TIME
)

result = NumberOfAbcdMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderAbcdMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(1, result)
self.assertEqual(1, queryset.count())
self.assertIn(tapir_user.share_owner, queryset)
Original file line number Diff line number Diff line change
@@ -4,16 +4,16 @@

from tapir.coop.models import ShareOwnership
from tapir.coop.tests.factories import ShareOwnerFactory
from tapir.statistics.views.fancy_graph.number_of_active_members_view import (
NumberOfActiveMembersAtDateView,
from tapir.statistics.services.data_providers.data_provider_active_members import (
DataProviderActiveMembers,
)
from tapir.utils.tests_utils import (
TapirFactoryTestBase,
mock_timezone_now,
)


class TestNumberOfActiveMembersView(TapirFactoryTestBase):
class TestDataProviderActiveMembers(TapirFactoryTestBase):
NOW = datetime.datetime(year=2023, month=4, day=1, hour=12)
REFERENCE_TIME = timezone.make_aware(
datetime.datetime(year=2022, month=6, day=15, hour=12)
@@ -23,23 +23,20 @@ def setUp(self) -> None:
super().setUp()
self.NOW = mock_timezone_now(self, self.NOW)

def test_calculateDatapoint_memberIsNotActive_notCounted(self):
def test_getQueryset_memberIsNotActive_notIncluded(self):
ShareOwnerFactory.create(nb_shares=0)

result = NumberOfActiveMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderActiveMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberIsActive_counted(self):
ShareOwnerFactory.create(nb_shares=1, is_investing=False)
def test_getQueryset_memberIsActive_included(self):
share_owner = ShareOwnerFactory.create(nb_shares=1, is_investing=False)
ShareOwnership.objects.update(
start_date=self.REFERENCE_TIME.date() - datetime.timedelta(days=1)
)

result = NumberOfActiveMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderActiveMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(1, result)
self.assertEqual(1, queryset.count())
self.assertIn(share_owner, queryset)
Original file line number Diff line number Diff line change
@@ -5,16 +5,16 @@
from tapir.accounts.tests.factories.factories import TapirUserFactory
from tapir.coop.models import ShareOwnership
from tapir.coop.tests.factories import ShareOwnerFactory
from tapir.statistics.views.fancy_graph.number_of_active_members_with_account_view import (
NumberOfActiveMembersWithAccountAtDateView,
from tapir.statistics.services.data_providers.data_provider_active_members_with_account import (
DataProviderActiveMembersWithAccount,
)
from tapir.utils.tests_utils import (
TapirFactoryTestBase,
mock_timezone_now,
)


class TestNumberOfActiveMembersView(TapirFactoryTestBase):
class TestDataProviderActiveMembersWithAccount(TapirFactoryTestBase):
NOW = datetime.datetime(year=2023, month=7, day=2, hour=18)
REFERENCE_TIME = timezone.make_aware(
datetime.datetime(year=2022, month=4, day=8, hour=10)
@@ -28,54 +28,56 @@ def create_test_user(self, is_investing=False, date_joined=None):
if date_joined is None:
date_joined = self.REFERENCE_TIME - datetime.timedelta(days=1)

TapirUserFactory.create(
tapir_user = TapirUserFactory.create(
share_owner__nb_shares=1,
share_owner__is_investing=is_investing,
date_joined=date_joined,
)
ShareOwnership.objects.update(
start_date=self.REFERENCE_TIME.date() - datetime.timedelta(days=1)
)
return tapir_user

def test_calculateDatapoint_memberIsNotActive_notCounted(self):
def test_getQueryset_memberIsNotActive_notIncluded(self):
self.create_test_user(is_investing=True)

result = NumberOfActiveMembersWithAccountAtDateView().calculate_datapoint(
queryset = DataProviderActiveMembersWithAccount.get_queryset(
self.REFERENCE_TIME
)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberHasNoAccount_notCounted(self):
def test_getQueryset_memberHasNoAccount_notIncluded(self):
ShareOwnerFactory.create(nb_shares=1, is_investing=False)
ShareOwnership.objects.update(
start_date=self.REFERENCE_TIME.date() - datetime.timedelta(days=1)
)

result = NumberOfActiveMembersWithAccountAtDateView().calculate_datapoint(
queryset = DataProviderActiveMembersWithAccount.get_queryset(
self.REFERENCE_TIME
)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberCreatedAccountAfterDate_notCounted(self):
def test_getQueryset_memberCreatedAccountAfterDate_notIncluded(self):
self.create_test_user(
date_joined=self.REFERENCE_TIME + datetime.timedelta(days=1)
)

result = NumberOfActiveMembersWithAccountAtDateView().calculate_datapoint(
queryset = DataProviderActiveMembersWithAccount.get_queryset(
self.REFERENCE_TIME
)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberCreatedAccountBeforeDate_counted(self):
self.create_test_user(
def test_getQueryset_memberCreatedAccountBeforeDate_included(self):
tapir_user = self.create_test_user(
date_joined=self.REFERENCE_TIME - datetime.timedelta(days=1)
)

result = NumberOfActiveMembersWithAccountAtDateView().calculate_datapoint(
queryset = DataProviderActiveMembersWithAccount.get_queryset(
self.REFERENCE_TIME
)

self.assertEqual(1, result)
self.assertEqual(1, queryset.count())
self.assertIn(tapir_user.share_owner, queryset)
Original file line number Diff line number Diff line change
@@ -4,8 +4,8 @@

from tapir.accounts.models import TapirUser
from tapir.coop.models import ShareOwner
from tapir.statistics.views.fancy_graph.number_of_co_purchasers_view import (
NumberOfCoPurchasersAtDateView,
from tapir.statistics.services.data_providers.data_provider_co_purchasers import (
DataProviderCoPurchasers,
)
from tapir.utils.tests_utils import (
TapirFactoryTestBase,
@@ -14,7 +14,7 @@
)


class TestNumberOfCoPurchasersView(TapirFactoryTestBase):
class TestDataProviderCoPurchasers(TapirFactoryTestBase):
NOW = datetime.datetime(year=2023, month=4, day=1, hour=12)
REFERENCE_TIME = timezone.make_aware(
datetime.datetime(year=2022, month=6, day=15, hour=12)
@@ -24,35 +24,30 @@ def setUp(self) -> None:
super().setUp()
self.NOW = mock_timezone_now(self, self.NOW)

def test_calculateDatapoint_memberHasCoPurchaserButCannotShop_notCounted(self):
def test_getQueryset_memberHasCoPurchaserButCannotShop_notIncluded(self):
create_member_that_can_shop(self, self.REFERENCE_TIME)
ShareOwner.objects.update(is_investing=True)
TapirUser.objects.update(co_purchaser="A test co-purchaser")

result = NumberOfCoPurchasersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderCoPurchasers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberCanShopButDoesntHaveACoPurchaser_notCounted(
def test_getQueryset_memberCanShopButDoesntHaveACoPurchaser_notIncluded(
self,
):
create_member_that_can_shop(self, self.REFERENCE_TIME)
TapirUser.objects.update(co_purchaser="")

result = NumberOfCoPurchasersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderCoPurchasers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberIsWorkingAndHasCoPurchaser_counted(self):
create_member_that_can_shop(self, self.REFERENCE_TIME)
def test_getQueryset_memberIsWorkingAndHasCoPurchaser_included(self):
tapir_user = create_member_that_can_shop(self, self.REFERENCE_TIME)
TapirUser.objects.update(co_purchaser="A test co-purchaser")

result = NumberOfCoPurchasersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderCoPurchasers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(1, result)
self.assertEqual(1, queryset.count())
self.assertIn(tapir_user.share_owner, queryset)
Original file line number Diff line number Diff line change
@@ -5,8 +5,8 @@
from tapir.accounts.models import TapirUser
from tapir.coop.models import ShareOwner
from tapir.shifts.models import ShiftExemption, ShiftUserData
from tapir.statistics.views.fancy_graph.number_of_exempted_members_view import (
NumberOfExemptedMembersAtDateView,
from tapir.statistics.services.data_providers.data_provider_exempted_members import (
DataProviderExemptedMembers,
)
from tapir.utils.tests_utils import (
TapirFactoryTestBase,
@@ -15,7 +15,7 @@
)


class TestNumberOfExemptedMembersAtDateView(TapirFactoryTestBase):
class TestDataProviderExemptedMembersAtDate(TapirFactoryTestBase):
NOW = datetime.datetime(year=2022, month=7, day=1, hour=12)
REFERENCE_TIME = timezone.make_aware(
datetime.datetime(year=2023, month=8, day=15, hour=18)
@@ -32,49 +32,45 @@ def create_member_where_the_only_reason_for_not_working_is_an_exemption(self):
end_date=self.REFERENCE_TIME.date() + datetime.timedelta(days=1),
shift_user_data=tapir_user.shift_user_data,
)
return tapir_user

def test_calculateDatapoint_exemptedMemberThatWouldWorkOtherwise_counted(self):
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()

result = NumberOfExemptedMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
def test_getQueryset_exemptedMemberThatWouldWorkOtherwise_included(self):
tapir_user = (
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()
)

self.assertEqual(1, result)
queryset = DataProviderExemptedMembers.get_queryset(self.REFERENCE_TIME)

def test_calculateDatapoint_memberHasExemptionButIsNotActive_notCounted(self):
self.assertEqual(1, queryset.count())
self.assertIn(tapir_user.share_owner, queryset)

def test_getQueryset_memberHasExemptionButIsNotActive_notIncluded(self):
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()
ShareOwner.objects.update(is_investing=True)

result = NumberOfExemptedMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderExemptedMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberHasExemptionButIsFrozen_notCounted(self):
def test_getQueryset_memberHasExemptionButIsFrozen_notIncluded(self):
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()
ShiftUserData.objects.update(is_frozen=True)

result = NumberOfExemptedMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderExemptedMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberHasExemptionButJoinedAfterDate_notCounted(self):
def test_getQueryset_memberHasExemptionButJoinedAfterDate_notIncluded(self):
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()
TapirUser.objects.update(
date_joined=self.REFERENCE_TIME + datetime.timedelta(days=1)
)

result = NumberOfExemptedMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderExemptedMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())

def test_calculateDatapoint_memberHasExemptionThatIsNotActiveAtGivenDate_notCounted(
def test_getQueryset_memberHasExemptionThatIsNotActiveAtGivenDate_notIncluded(
self,
):
self.create_member_where_the_only_reason_for_not_working_is_an_exemption()
@@ -83,8 +79,6 @@ def test_calculateDatapoint_memberHasExemptionThatIsNotActiveAtGivenDate_notCoun
end_date=self.REFERENCE_TIME.date() + datetime.timedelta(days=2),
)

result = NumberOfExemptedMembersAtDateView().calculate_datapoint(
self.REFERENCE_TIME
)
queryset = DataProviderExemptedMembers.get_queryset(self.REFERENCE_TIME)

self.assertEqual(0, result)
self.assertEqual(0, queryset.count())
Loading