class TestMissionUpdateView(TestCase): def setUp(self): self.client = Client() self.email = "*****@*****.**" self.password = "******" self.pleb = create_user_util_test(self.email) self.user = User.objects.get(email=self.email) self.pleb.email_verified = True self.pleb.save() self.update = Update().save() self.quest = Quest(about='Test Bio', owner_username=self.pleb.username).save() self.quest.editors.connect(self.pleb) self.quest.moderators.connect(self.pleb) cache.clear() self.mission = Mission(owner_username=self.pleb.username, title=str(uuid1()), focus_name="advocacy").save() self.quest.missions.connect(self.mission) self.update.mission.connect(self.mission) cache.set(self.pleb.username, self.pleb) def test_edit_update(self): self.client.login(username=self.user.username, password=self.password) url = reverse("mission_edit_update", kwargs={ "object_uuid": self.mission.object_uuid, "edit_id": self.update.object_uuid, "slug": slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_edit_update_doesnt_exist(self): self.client.login(username=self.user.username, password=self.password) url = reverse("mission_edit_update", kwargs={ "object_uuid": self.mission.object_uuid, "edit_id": self.update.object_uuid, "slug": slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK)
class TestMission(TestCase): def setUp(self): self.email = "*****@*****.**" create_user_util_test(self.email) self.owner = Pleb.nodes.get(email=self.email) self.quest = Quest(owner_username=self.owner.username, object_uuid=str(uuid1())).save() self.quest.owner.connect(self.owner) self.mission = Mission(owner_username=self.owner.username, title=str(uuid1())).save() self.quest.missions.connect(self.mission) def test_get_not_cached(self): cache.clear() res = Mission.get(self.mission.object_uuid) self.assertEqual(res.object_uuid, self.mission.object_uuid) def test_get_cached(self): cache.set("%s_mission" % self.mission.object_uuid, self.mission) res = Mission.get(self.mission.object_uuid) self.assertEqual(res.object_uuid, self.mission.object_uuid) def test_get_dne(self): try: Mission.get(str(uuid1())) except DoesNotExist: # this is the best way to test this, maybe? self.assertTrue(True) def test_get_quest(self): res = Mission.get_quest(self.mission.object_uuid) self.assertEqual(res.owner_username, self.quest.owner_username) def test_get_focus_on_position(self): position = Position().save() self.mission.position.connect(position) res = self.mission.get_focused_on() self.assertEqual(position.object_uuid, res['id']) def test_get_focus_on_tag(self): tag = Tag(name=str(uuid1())).save() self.mission.tag.connect(tag) res = self.mission.get_focused_on() self.assertIn(tag.object_uuid, res['id']) def test_get_focus_on_question(self): question = Question(title=str(uuid1())).save() self.mission.question.connect(question) res = self.mission.get_focused_on() self.assertIn(question.object_uuid, res['id']) def test_get_location(self): location = Location().save() self.mission.location.connect(location) res = self.mission.get_location() self.assertEqual(res.object_uuid, location.object_uuid) def test_get_editors(self): self.quest.editors.connect(self.owner) cache.clear() res = Mission.get_editors(self.mission.owner_username) self.assertIn(self.owner.username, res) def test_get_moderators(self): self.quest.moderators.connect(self.owner) cache.clear() res = Mission.get_moderators(self.mission.owner_username) self.assertIn(self.owner.username, res) def test_get_donations(self): donation = Donation(amount=500).save() donation.mission.connect(self.mission) res = Mission.get_donations(self.mission.object_uuid) self.assertEqual(res[0].object_uuid, donation.object_uuid) def test_get_donors(self): donation = Donation(amount=500, completed=True, owner_username=self.owner.username).save() donation.owned_by.connect(self.owner) donation.mission.connect(self.mission) cache.clear() res = Mission.get_donors(self.mission.object_uuid) self.assertEqual(res[0], self.owner.username) def test_get_donors_order(self): order = Order(completed=True, owner_username=self.owner.username).save() order.mission.connect(self.mission) cache.clear() res = Mission.get_donors(self.mission.object_uuid) self.assertEqual(res[0], self.owner.username) def test_get_mission_title(self): res = self.mission.get_mission_title() self.assertEqual(res, self.mission.title) def test_get_mission_title_no_title(self): self.mission.title = "" self.focus_name = "Some test stuff" self.mission.save() res = self.mission.get_mission_title() self.assertIsNone(res) def test_get_total_donation_amount(self): donation1 = Donation(amount=100).save() donation2 = Donation(amount=200).save() donation1.mission.connect(self.mission) donation2.mission.connect(self.mission) res = self.mission.get_total_donation_amount() self.assertEqual(res, "2.25") def test_endorse_pleb(self): res = Mission.endorse(self.mission.object_uuid, self.owner.username, "profile") self.assertTrue(res) def test_endorse_quest(self): res = Mission.endorse(self.mission.object_uuid, self.owner.username) self.assertTrue(res) def test_unendorse_pleb(self): res = Mission.endorse(self.mission.object_uuid, self.owner.username, "profile") self.assertTrue(res) res = Mission.unendorse(self.mission.object_uuid, self.owner.username, "profile") self.assertTrue(res) def test_unendorse_quest(self): res = Mission.endorse(self.mission.object_uuid, self.owner.username) self.assertTrue(res) res = Mission.unendorse(self.mission.object_uuid, self.owner.username) self.assertTrue(res) def test_get_average_donation_amount(self): donation = Donation(amount=500).save() donation.mission.connect(self.mission) donation2 = Donation(amount=2500).save() donation2.mission.connect(self.mission) res = self.mission.get_average_donation_amount() self.assertEqual(res, "15.00") def test_get_average_donation_amount_cached(self): cache.set("%s_average_donation_amount" % self.mission.object_uuid, "15.00") res = self.mission.get_average_donation_amount() self.assertEqual(res, "15.00") def test_get_average_donation_amount_no_donations(self): res = self.mission.get_average_donation_amount() self.assertEqual(res, "0.00")
class ContributionViewTests(TestCase): def setUp(self): self.factory = APIRequestFactory() self.client = Client() self.email = "*****@*****.**" self.password = "******" self.pleb = create_user_util_test(self.email) self.user = User.objects.get(email=self.email) self.email2 = "*****@*****.**" self.pleb2 = create_user_util_test(self.email2) self.user2 = User.objects.get(email=self.email2) self.pleb.email_verified = True self.pleb.save() cache.clear() self.mission = Mission(owner_username=self.user.username, title=str(uuid1())).save() self.quest = Quest(owner_username=self.pleb.username).save() self.quest2 = Quest(owner_username=self.pleb2.username).save() self.quest.missions.connect(self.mission) self.quest.owner.connect(self.pleb) def test_contribution_mission_get(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_donation_amount', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_contribution_mission_get_dne(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_donation_amount', kwargs={ 'object_uuid': str(uuid1()), 'slug': "what_what" }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_contribution_quest_get(self): self.client.login(username=self.user.username, password=self.password) url = reverse('volunteer_choose', kwargs={'username': self.quest.owner_username}) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_contribution_quest_get_dne(self): self.client.login(username=self.user.username, password=self.password) url = reverse('volunteer_choose', kwargs={'username': "******"}) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_contribution_quest_no_mission(self): self.client.login(username=self.user.username, password=self.password) url = reverse('volunteer_choose', kwargs={'username': self.quest2.owner_username}) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_volunteer_option_not_authenticated(self): url = reverse('mission_volunteer_option', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_volunteer_signup_authenticated(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_volunteer_name', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_donate_signup_authenticated(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_donation_name', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_donate_payment_unauthenticated(self): url = reverse('mission_donation_payment', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': slugify(self.mission.get_mission_title()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND)
class MissionViewTests(TestCase): def setUp(self): db.cypher_query('MATCH (a) OPTIONAL MATCH (a)-[r]-() DELETE a, r') self.factory = APIRequestFactory() self.client = Client() self.email = "*****@*****.**" self.password = "******" create_user_util_test(self.email) self.pleb = Pleb.nodes.get(email=self.email) self.user = User.objects.get(email=self.email) self.pleb.email_verified = True self.pleb.save() cache.clear() self.mission = Mission(owner_username=self.user.username, title=str(uuid1())).save() self.quest = Quest(owner_username=self.pleb.username).save() self.quest.missions.connect(self.mission) self.quest.owner.connect(self.pleb) def test_mission_list(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_list') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_selector(self): self.client.login(username=self.user.username, password=self.password) url = reverse('select_mission') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_public_office(self): self.client.login(username=self.user.username, password=self.password) url = reverse('public_office') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_advocate_mission(self): self.client.login(username=self.user.username, password=self.password) url = reverse('advocate') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_account_setup(self): self.client.login(username=self.user.username, password=self.password) url = reverse('account_setup') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_account_setup_not_logged_in(self): url = reverse('account_setup') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_account_setup_no_quest(self): db.cypher_query('MATCH (a) OPTIONAL MATCH (a)-[r]-() DELETE a, r') self.client.login(username=self.user.username, password=self.password) url = reverse('account_setup') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission_redirect(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_redirect', kwargs={'object_uuid': self.mission.object_uuid}) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_301_MOVED_PERMANENTLY) def test_mission_redirect_dne(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_redirect', kwargs={'object_uuid': str(uuid1())}) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_dne(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission', kwargs={ 'object_uuid': str(uuid1()), 'slug': str(uuid1()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission_updates(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_updates', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) update = Update(title=str(uuid1())).save() update.mission.connect(self.mission) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_updates_dne(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_updates', kwargs={ 'object_uuid': str(uuid1()), 'slug': str(uuid1()) }) update = Update(title=str(uuid1())).save() update.mission.connect(self.mission) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission_updates_no_updates(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_updates', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_updates_no_quest(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_updates', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) update = Update(title=str(uuid1())).save() update.mission.connect(self.mission) self.quest.missions.disconnect(self.mission) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission_settings_redirect(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_settings_redirect') res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_mission_settings(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_settings', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_settings_completed_wallpaper(self): self.quest.wallpaper_pic = "helloworld.png" self.quest.save() setup_onboarding(self.quest, self.mission) self.client.login(username=self.user.username, password=self.password) url = reverse('mission_settings', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_settings_completed_verification(self): self.quest.account_verified = "verified" self.quest.save() setup_onboarding(self.quest, self.mission) self.client.login(username=self.user.username, password=self.password) url = reverse('mission_settings', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_mission_settings_completed_about(self): self.quest.about = "some short summary" self.quest.save() setup_onboarding(self.quest, self.mission) self.client.login(username=self.user.username, password=self.password) url = reverse('mission_settings', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_endorse(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_endorse', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_endorse_unauthorized(self): url = reverse('mission_endorse', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND) def test_endorsements(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_endorsements', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_endorsements_unauthorized(self): url = reverse('mission_endorsements', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_conversations(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_conversations', kwargs={ 'object_uuid': self.mission.object_uuid, 'slug': self.mission.get_mission_title() }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) def test_conversations_does_not_exist(self): self.client.login(username=self.user.username, password=self.password) url = reverse('mission_conversations', kwargs={ 'object_uuid': str(uuid1()), 'slug': str(uuid1()) }) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_302_FOUND)