From 9134fa5ed29621f78c8ced7b11a88ab1b6b6bd53 Mon Sep 17 00:00:00 2001
From: Christopher Neugebauer <chrisjrn@gmail.com>
Date: Sun, 4 Sep 2016 13:11:45 +1000
Subject: [PATCH] Initial version of test_speaker, which creates all of the
 boilerplate for proposals

---
 registrasion/tests/test_speaker.py | 106 +++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)
 create mode 100644 registrasion/tests/test_speaker.py

diff --git a/registrasion/tests/test_speaker.py b/registrasion/tests/test_speaker.py
new file mode 100644
index 00000000..cdad2181
--- /dev/null
+++ b/registrasion/tests/test_speaker.py
@@ -0,0 +1,106 @@
+import pytz
+
+from django.core.exceptions import ValidationError
+
+from registrasion.models import commerce
+from registrasion.models import conditions
+from registrasion.controllers.category import CategoryController
+from controller_helpers import TestingCartController
+from controller_helpers import TestingInvoiceController
+from registrasion.controllers.product import ProductController
+
+from symposion.conference import models as conference_models
+from symposion.proposals import models as proposal_models
+from symposion.speakers import models as speaker_models
+
+from test_cart import RegistrationCartTestCase
+
+UTC = pytz.timezone('UTC')
+
+
+class SpeakerTestCase(RegistrationCartTestCase):
+
+    @classmethod
+    def _create_proposals(cls):
+        ''' Creates two proposals:
+
+        - User 1 will be presenter
+        - User 2 will be an additional presenter
+
+        Each proposal is of a different ProposalKind.
+        '''
+
+        conference = conference_models.Conference.objects.create(
+            title="TEST CONFERENCE.",
+        )
+        section = conference_models.Section.objects.create(
+            conference=conference,
+            name="TEST_SECTION",
+            slug="testsection",
+        )
+        proposal_section = proposal_models.ProposalSection.objects.create(
+            section=section,
+            closed=False,
+            published=False,
+        )
+
+        kind_1 = proposal_models.ProposalKind.objects.create(
+            section=section,
+            name="Kind 1",
+            slug="kind1",
+        )
+        kind_2 = proposal_models.ProposalKind.objects.create(
+            section=section,
+            name="Kind 2",
+            slug="kind2",
+        )
+
+        speaker_1 = speaker_models.Speaker.objects.create(
+            user=cls.USER_1,
+            name="Speaker 1",
+            annotation="",
+        )
+        speaker_2 = speaker_models.Speaker.objects.create(
+            user=cls.USER_2,
+            name="Speaker 2",
+            annotation="",
+        )
+
+        proposal_1 = proposal_models.ProposalBase.objects.create(
+            kind=kind_1,
+            title="Proposal 1",
+            abstract="Abstract",
+            description="Description",
+            speaker=speaker_1,
+        )
+        proposal_models.AdditionalSpeaker.objects.create(
+            speaker=speaker_2,
+            proposalbase=proposal_1,
+            status=proposal_models.AdditionalSpeaker.SPEAKING_STATUS_ACCEPTED,
+        )
+
+        proposal_2 = proposal_models.ProposalBase.objects.create(
+            kind=kind_2,
+            title="Proposal 2",
+            abstract="Abstract",
+            description="Description",
+            speaker=speaker_1,
+        )
+        proposal_models.AdditionalSpeaker.objects.create(
+            speaker=speaker_2,
+            proposalbase=proposal_2,
+            status=proposal_models.AdditionalSpeaker.SPEAKING_STATUS_ACCEPTED,
+        )
+
+        cls.KIND_1 = kind_1
+        cls.KIND_2 = kind_2
+        cls.PROPOSAL_1 = proposal_1
+        cls.PROPOSAL_2 = proposal_2
+
+    def test_create_proposals(self):
+        self._create_proposals()
+
+        self.assertIsNotNone(self.KIND_1)
+        self.assertIsNotNone(self.KIND_2)
+        self.assertIsNotNone(self.PROPOSAL_1)
+        self.assertIsNotNone(self.PROPOSAL_2)