Skip to content

Commit

Permalink
Merge pull request #5187 from onepercentclub/hotfix/BB-20361-no-doubl…
Browse files Browse the repository at this point in the history
…e-succeed-clicking

Fix succeed flow
  • Loading branch information
gannetson committed Aug 9, 2022
2 parents 7224e8a + d2fe15d commit be3d3c6
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
4 changes: 2 additions & 2 deletions bluebottle/time_based/effects.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import datetime, date
from datetime import datetime, date, timedelta

from dateutil.relativedelta import relativedelta
from django.db.models import F
Expand Down Expand Up @@ -123,7 +123,7 @@ class SetEndDateEffect(Effect):
template = 'admin/set_end_date.html'

def pre_save(self, **kwargs):
self.instance.deadline = date.today()
self.instance.deadline = date.today() - timedelta(days=1)


class ClearDeadlineEffect(Effect):
Expand Down
36 changes: 35 additions & 1 deletion bluebottle/time_based/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from openpyxl import load_workbook
from rest_framework import status

from bluebottle.activities.tests.factories import TeamFactory
from bluebottle.files.tests.factories import PrivateDocumentFactory
from bluebottle.initiatives.models import InitiativePlatformSettings
from bluebottle.initiatives.tests.factories import InitiativeFactory, InitiativePlatformSettingsFactory
Expand All @@ -30,7 +31,6 @@
DateParticipantFactory, PeriodParticipantFactory,
DateActivitySlotFactory, SlotParticipantFactory, SkillFactory, TeamSlotFactory
)
from bluebottle.activities.tests.factories import TeamFactory


class TimeBasedListAPIViewTestCase():
Expand Down Expand Up @@ -955,6 +955,20 @@ def test_get_open(self):
in self.data['meta']['transitions']
)

def test_owner_succeed_manually(self):
self.initiative = InitiativeFactory.create(status='approved')
self.activity.initiative = self.initiative
self.activity.start = None
self.activity.deadline = None
self.activity.states.submit(save=True)
PeriodParticipantFactory.create(activity=self.activity)
response = self.client.get(self.url, user=self.activity.owner)
self.data = response.json()['data']
self.assertTrue(
{'name': 'succeed_manually', 'target': 'succeeded', 'available': True}
in self.data['meta']['transitions']
)

def test_get_open_with_participant(self):
self.activity.duration_period = 'weeks'
self.activity.save()
Expand Down Expand Up @@ -1287,6 +1301,26 @@ class PeriodTransitionAPIViewTestCase(TimeBasedTransitionAPIViewTestCase, Bluebo
factory = PeriodActivityFactory
participant_factory = PeriodParticipantFactory

def test_succeed_manually(self):
self.activity.start = None
self.activity.deadline = None
self.activity.initiative.states.submit()
self.activity.initiative.states.approve(save=True)
self.activity.states.submit(save=True)
PeriodParticipantFactory.create(activity=self.activity)

self.data['data']['attributes']['transition'] = 'succeed_manually'

response = self.client.post(
self.url,
json.dumps(self.data),
user=self.activity.owner
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.activity.refresh_from_db()
self.assertEqual(self.activity.status, 'succeeded')
self.assertIsNotNone(self.activity.deadline)


class DateActivitySlotListAPITestCase(BluebottleTestCase):
def setUp(self):
Expand Down
4 changes: 2 additions & 2 deletions bluebottle/time_based/tests/test_triggers.py
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ def test_succeed_manually(self):
self.activity.refresh_from_db()

self.activity.states.succeed_manually(save=True)
self.assertEqual(self.activity.deadline, date.today())
self.assertEqual(self.activity.deadline, date.today() - timedelta(days=1))

for duration in self.activity.durations:
self.assertEqual(duration.status, 'succeeded')
Expand Down Expand Up @@ -587,7 +587,7 @@ def test_succeed_manually_review_new(self):
mail.outbox = []

self.activity.states.succeed_manually(save=True)
self.assertEqual(self.activity.deadline, date.today())
self.assertEqual(self.activity.deadline, date.today() - timedelta(days=1))

for duration in self.activity.durations:
self.assertEqual(duration.status, 'succeeded')
Expand Down

0 comments on commit be3d3c6

Please sign in to comment.