class TestTeamMember(AgiloTestCase): def setUp(self): self.super() self.tmm = TeamMemberModelManager(self.teh.get_env()) def testTimeSheet(self): """Tests the accessor and mutator methods for attribute "time_sheet".""" test_ts_1 = [1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] test_ts_2 = [7.3, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0] # test the default constructor, capacity should return decimals team_member = self.tmm.create(name="Team Member #1", default_capacity=test_ts_1) self.assert_equals(team_member.capacity, test_ts_1) self.tmm.get_cache().invalidate() team_member = self.tmm.get(name="Team Member #1") self.assert_equals(team_member.capacity, test_ts_1) team_member.capacity = test_ts_2 self.assert_equals(team_member.capacity, test_ts_2) self.assert_true(self.tmm.save(team_member)) team_member = self.tmm.get(name="Team Member #1") self.assert_equals(team_member.capacity, test_ts_2) def test_set_get_session_attribute(self): team_member = self.tmm.create(name="test_member") env = self.teh.get_env() set_user_attribute_in_session(env, 'test', 'Test', team_member.name) self.assert_equals('Test', get_user_attribute_from_session(env, 'test', team_member.name)) def test_set_get_full_name(self): team_member = self.tmm.create(name="test_member") team_member.full_name = 'Test Member' self.assert_equals('Test Member', team_member.full_name) def test_team_member_in_team(self): team = self.teh.create_team(name="Test Team") tm1 = self.tmm.create(name="tm1", team=team) self.assert_true(tm1.exists) tm2 = self.tmm.create(name="tm2", team=team) self.assert_true(tm2.exists) tm3 = self.tmm.create(name="tm3") self.assert_true(tm3.exists) # Check members of the team using the __cmp__ of persistent object self.assert_equals(2, len(team.members)) self.assert_true(tm1 in team.members) self.assert_true(tm2 in team.members) self.assert_false(tm3 in team.members) def test_set_get_email(self): team_member = self.tmm.create(name="test_member") team_member.email = "*****@*****.**" self.assert_equals('*****@*****.**', team_member.email) def test_can_load_name_and_email_from_session_attributes(self): # Create a team member in the session simulating registration full_name = "Team Member Test" email = "*****@*****.**" set_user_attribute_in_session(self.env, 'name', full_name, 'tm') set_user_attribute_in_session(self.env, 'email', email, 'tm') tm = self.tmm.create(name='tm') self.assert_equals(full_name, tm.full_name) self.assert_equals(email, tm.email) def test_can_access_timezone_in_session_table(self): timezone_name = "GMT +7:00" timezone_offset = timedelta(hours=7) timezone = get_timezone(timezone_name) self.assert_equals(timezone_offset, timezone.utcoffset(None)) set_user_attribute_in_session(self.env, 'tz', timezone_name, 'tm') member = self.tmm.create(name='tm') self.assert_equals(timezone_offset, member.timezone().utcoffset(None)) def test_falls_back_to_server_timezone_if_none_is_set_in_session_table(self): member = self.tmm.create(name='tm') local_timezone_offset = localtz.utcoffset(now()) self.assert_equals(local_timezone_offset, member.timezone().utcoffset(now())) def test_falls_back_to_server_timezone_if_garbage_is_set_in_session_table(self): set_user_attribute_in_session(self.env, 'tz', "fnord", 'tm') member = self.tmm.create(name='tm') local_timezone_offset = localtz.utcoffset(now()) self.assert_equals(local_timezone_offset, member.timezone().utcoffset(now())) def test_knows_hour_at_which_work_starts_and_ends(self): member = self.tmm.create(name='tm') self.assert_equals(9, member.time_workday_starts().hour) self.assert_equals(18, member.time_workday_ends().hour) def test_knows_number_of_hours_of_workday(self): member = self.tmm.create(name='tm') self.assert_equals(9, member.number_of_working_hours_on_workday())