Esempio n. 1
0
    def test_gen_stats_different_years(self):
        current_year = datetime_to_lectureyear(date.today())

        # postgres does not define random access directly on unsorted querysets
        members = [member for member in Member.objects.all()]

        # one first year student
        m = members[0]
        m.profile.starting_year = current_year
        m.profile.save()

        # one second year student
        m = members[1]
        m.profile.starting_year = current_year - 1
        m.profile.save()

        # no third year students

        # one fourth year student
        m = members[2]
        m.profile.starting_year = current_year - 3
        m.profile.save()

        # no fifth year students

        # one >5 year student
        m = members[3]
        m.profile.starting_year = current_year - 5
        m.profile.save()

        # 4 active members
        result = gen_stats_year()
        self.assertEqual(4, self.sum_members(result))
        self.assertEqual(4, self.sum_members(result, Membership.MEMBER))

        # one first year student
        self.assertEqual(1, result["2019"][Membership.MEMBER])

        # one second year student
        self.assertEqual(1, result["2018"][Membership.MEMBER])

        # no third year students
        self.assertEqual(0, result["2017"][Membership.MEMBER])

        # one fourth year student
        self.assertEqual(1, result["2016"][Membership.MEMBER])

        # no fifth year students
        self.assertEqual(0, result["2015"][Membership.MEMBER])

        # one >5 year student
        self.assertEqual(1, result["Older"][Membership.MEMBER])
Esempio n. 2
0
    def test_gen_stats_active(self):
        """
        Testing if active and non-active objects are counted correctly
        """
        current_year = datetime_to_lectureyear(date.today())

        # Set start date to current year - 1:
        for m in Member.objects.all():
            m.profile.starting_year = current_year - 1
            m.profile.save()
        result = gen_stats_year()
        self.assertEqual(10, self.sum_members(result))
        self.assertEqual(10, self.sum_members(result, Membership.MEMBER))

        result = {k: v for k, v in gen_stats_member_type().items()}
        self.assertEqual(10, self.sum_member_types(result))

        # Change one membership to benefactor should decrease amount of members
        m = Membership.objects.all()[0]
        m.type = Membership.BENEFACTOR
        m.save()

        result = gen_stats_year()
        self.assertEqual(10, self.sum_members(result))
        self.assertEqual(9, self.sum_members(result, Membership.MEMBER))
        self.assertEqual(1, self.sum_members(result, Membership.BENEFACTOR))

        result = {k: v for k, v in gen_stats_member_type().items()}
        self.assertEqual(10, self.sum_member_types(result))
        self.assertEqual(9, result[Membership.MEMBERSHIP_TYPES[0][1]])
        self.assertEqual(1, result[Membership.MEMBERSHIP_TYPES[1][1]])

        # Same for honorary members
        m = Membership.objects.all()[1]
        m.type = Membership.HONORARY
        m.save()

        result = gen_stats_year()
        self.assertEqual(10, self.sum_members(result))
        self.assertEqual(8, self.sum_members(result, Membership.MEMBER))
        self.assertEqual(1, self.sum_members(result, Membership.BENEFACTOR))
        self.assertEqual(1, self.sum_members(result, Membership.HONORARY))

        result = {k: v for k, v in gen_stats_member_type().items()}
        self.assertEqual(10, self.sum_member_types(result))
        self.assertEqual(8, result[Membership.MEMBERSHIP_TYPES[0][1]])
        self.assertEqual(1, result[Membership.MEMBERSHIP_TYPES[1][1]])
        self.assertEqual(1, result[Membership.MEMBERSHIP_TYPES[2][1]])

        # Terminate one membership by setting end date to current_year -1,
        # should decrease total amount and total members
        m = Membership.objects.all()[2]
        m.until = timezone.now() - timedelta(days=365)
        m.save()
        result = gen_stats_year()
        self.assertEqual(9, self.sum_members(result))
        self.assertEqual(7, self.sum_members(result, Membership.MEMBER))
        self.assertEqual(1, self.sum_members(result, Membership.BENEFACTOR))
        self.assertEqual(1, self.sum_members(result, Membership.HONORARY))

        result = {k: v for k, v in gen_stats_member_type().items()}
        self.assertEqual(9, self.sum_member_types(result))
        self.assertEqual(7, result[Membership.MEMBERSHIP_TYPES[0][1]])
        self.assertEqual(1, result[Membership.MEMBERSHIP_TYPES[1][1]])
        self.assertEqual(1, result[Membership.MEMBERSHIP_TYPES[2][1]])
Esempio n. 3
0
 def test_gen_stats_year_no_members(self):
     result = gen_stats_year()
     self.assertEqual(0, self.sum_members(result))