def test_tjp_file_is_created(self): """testing if the tjp file is correctly created """ # create the scheduler tjp_sched = TaskJugglerScheduler() tjp_sched.projects = [self.test_proj1] tjp_sched._create_tjp_file() tjp_sched._create_tjp_file_content() tjp_sched._fill_tjp_file() # check self.assertTrue(os.path.exists(tjp_sched.tjp_file_full_path)) # clean up the test tjp_sched._clean_up()
def test_tjp_file_content_is_correct(self): """testing if the tjp file content is correct """ tjp_sched = TaskJugglerScheduler() test_studio = Studio( name='Test Studio', timing_resolution=datetime.timedelta(minutes=30) ) test_studio.daily_working_hours = 9 test_studio.id = 564 test_studio.start = datetime.datetime(2013, 4, 16, 0, 7) test_studio.end = datetime.datetime(2013, 6, 30, 0, 0) test_studio.now = datetime.datetime(2013, 4, 16, 0, 0) tjp_sched.studio = test_studio tjp_sched._create_tjp_file() tjp_sched._create_tjp_file_content() import jinja2 expected_tjp_template = jinja2.Template( """# Generated By Stalker v{{stalker.__version__}} project Studio_564 "Studio_564" 2013-04-16 - 2013-06-30 { timingresolution 30min now 2013-04-16-00:00 dailyworkinghours 9 weekstartsmonday workinghours mon 09:00 - 18:00 workinghours tue 09:00 - 18:00 workinghours wed 09:00 - 18:00 workinghours thu 09:00 - 18:00 workinghours fri 09:00 - 18:00 workinghours sat off workinghours sun off timeformat "%Y-%m-%d" scenario plan "Plan" trackingscenario plan } # resources resource resources "Resources" { resource User_3 "User_3" { efficiency 1.0 } resource User_{{user1.id}} "User_{{user1.id}}" { efficiency 1.0 } resource User_{{user2.id}} "User_{{user2.id}}" { efficiency 1.0 } resource User_{{user3.id}} "User_{{user3.id}}" { efficiency 1.0 } resource User_{{user4.id}} "User_{{user4.id}}" { efficiency 1.0 } resource User_{{user5.id}} "User_{{user5.id}}" { efficiency 1.0 } resource User_{{user6.id}} "User_{{user6.id}}" { efficiency 1.0 } } # tasks task Project_{{proj1.id}} "Project_{{proj1.id}}" { task Task_{{task1.id}} "Task_{{task1.id}}" { effort 50.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } } task Task_{{task2.id}} "Task_{{task2.id}}" { depends Project_{{proj1.id}}.Task_{{task1.id}} {onend} effort 60.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } } } # reports taskreport breakdown "{{csv_path}}"{ formats csv timeformat "%Y-%m-%d-%H:%M" columns id, start, end }""") expected_tjp_content = expected_tjp_template.render( { 'stalker': stalker, 'studio': test_studio, 'csv_path': tjp_sched.temp_file_name, 'user1': self.test_user1, 'user2': self.test_user2, 'user3': self.test_user3, 'user4': self.test_user4, 'user5': self.test_user5, 'user6': self.test_user6, 'proj1': self.test_proj1, 'task1': self.test_task1, 'task2': self.test_task2, } ) self.maxDiff = None tjp_content = tjp_sched.tjp_content # print tjp_content tjp_sched._clean_up() self.assertEqual(tjp_content, expected_tjp_content)
def test_tjp_file_content_is_correct(self): """testing if the tjp file content is correct """ # enter a couple of time logs from stalker import TimeLog tlog1 = TimeLog(resource=self.test_user1, task=self.test_task1, start=datetime.datetime(2013, 4, 16, 6, 0, tzinfo=pytz.utc), end=datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc)) from stalker.db.session import DBSession DBSession.add(tlog1) DBSession.commit() tjp_sched = TaskJugglerScheduler() from stalker import Studio test_studio = Studio(name='Test Studio', timing_resolution=datetime.timedelta(minutes=30)) test_studio.daily_working_hours = 9 test_studio.id = 564 test_studio.start = \ datetime.datetime(2013, 4, 16, 0, 7, tzinfo=pytz.utc) test_studio.end = datetime.datetime(2013, 6, 30, 0, 0, tzinfo=pytz.utc) test_studio.now = datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc) tjp_sched.studio = test_studio tjp_sched._create_tjp_file() tjp_sched._create_tjp_file_content() assert TimeLog.query.all() != [] import jinja2 expected_tjp_template = jinja2.Template( """# Generated By Stalker v{{stalker.__version__}} project Studio_564 "Studio_564" 2013-04-16 - 2013-06-30 { timingresolution 30min now 2013-04-16-00:00 dailyworkinghours 9 weekstartsmonday workinghours mon 09:00 - 18:00 workinghours tue 09:00 - 18:00 workinghours wed 09:00 - 18:00 workinghours thu 09:00 - 18:00 workinghours fri 09:00 - 18:00 workinghours sat off workinghours sun off timeformat "%Y-%m-%d" scenario plan "Plan" trackingscenario plan } # resources resource resources "Resources" { resource User_3 "User_3" { efficiency 1.0 } resource User_{{user1.id}} "User_{{user1.id}}" { efficiency 1.0 } resource User_{{user2.id}} "User_{{user2.id}}" { efficiency 1.0 } resource User_{{user3.id}} "User_{{user3.id}}" { efficiency 1.0 } resource User_{{user4.id}} "User_{{user4.id}}" { efficiency 1.0 } resource User_{{user5.id}} "User_{{user5.id}}" { efficiency 1.0 } resource User_{{user6.id}} "User_{{user6.id}}" { efficiency 1.0 } } # tasks task Project_{{proj.id}} "Project_{{proj.id}}" { task Task_{{task1.id}} "Task_{{task1.id}}" { effort 50.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } booking User_{{user1.id}} 2013-04-16-06:00:00 - 2013-04-16-09:00:00 { overtime 2 } } task Task_{{task2.id}} "Task_{{task2.id}}" { priority 800 depends Project_{{proj.id}}.Task_{{task1.id}} {onend} effort 60.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } } } # reports taskreport breakdown "{{csv_path}}"{ formats csv timeformat "%Y-%m-%d-%H:%M" columns id, start, end } """) import stalker expected_tjp_content = expected_tjp_template.render({ 'stalker': stalker, 'studio': test_studio, 'csv_path': tjp_sched.temp_file_name, 'user1': self.test_user1, 'user2': self.test_user2, 'user3': self.test_user3, 'user4': self.test_user4, 'user5': self.test_user5, 'user6': self.test_user6, 'proj': self.test_proj1, 'task1': self.test_task1, 'task2': self.test_task2, }) self.maxDiff = None tjp_content = tjp_sched.tjp_content # print tjp_content tjp_sched._clean_up() # print(expected_tjp_content) # print('----------------') # print(tjp_content) assert tjp_content == expected_tjp_content
def test_tjp_file_content_is_correct(self): """testing if the tjp file content is correct """ tjp_sched = TaskJugglerScheduler() test_studio = Studio( name='Test Studio', timing_resolution=datetime.timedelta(minutes=30) ) test_studio.daily_working_hours = 9 test_studio.id = 564 test_studio.start = datetime.datetime(2013, 4, 16, 0, 7) test_studio.end = datetime.datetime(2013, 6, 30, 0, 0) test_studio.now = datetime.datetime(2013, 4, 16, 0, 0) tjp_sched.studio = test_studio tjp_sched._create_tjp_file() tjp_sched._create_tjp_file_content() import jinja2 expected_tjp_template = jinja2.Template( """# Generated By Stalker v{{stalker.__version__}} project Studio_564 "Studio_564" 2013-04-16 - 2013-06-30 { timingresolution 30min now 2013-04-16-00:00 dailyworkinghours 9 weekstartsmonday workinghours mon 09:00 - 18:00 workinghours tue 09:00 - 18:00 workinghours wed 09:00 - 18:00 workinghours thu 09:00 - 18:00 workinghours fri 09:00 - 18:00 workinghours sat off workinghours sun off timeformat "%Y-%m-%d" scenario plan "Plan" trackingscenario plan } # resources resource resources "Resources" { resource User_3 "User_3" { efficiency 1.0 } resource User_{{user1.id}} "User_{{user1.id}}" { efficiency 1.0 } resource User_{{user2.id}} "User_{{user2.id}}" { efficiency 1.0 } resource User_{{user3.id}} "User_{{user3.id}}" { efficiency 1.0 } resource User_{{user4.id}} "User_{{user4.id}}" { efficiency 1.0 } resource User_{{user5.id}} "User_{{user5.id}}" { efficiency 1.0 } resource User_{{user6.id}} "User_{{user6.id}}" { efficiency 1.0 } } # tasks task Project_{{proj1.id}} "Project_{{proj1.id}}" { task Task_{{task1.id}} "Task_{{task1.id}}" { effort 50.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } } task Task_{{task2.id}} "Task_{{task2.id}}" { depends Project_{{proj1.id}}.Task_{{task1.id}} {onend} effort 60.0h allocate User_{{user1.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent }, User_{{user2.id}} { alternative User_{{user3.id}}, User_{{user4.id}}, User_{{user5.id}} select minallocated persistent } } } # reports taskreport breakdown "{{csv_path}}"{ formats csv timeformat "%Y-%m-%d-%H:%M" columns id, start, end }""") expected_tjp_content = expected_tjp_template.render( { 'stalker': stalker, 'studio': test_studio, 'csv_path': tjp_sched.temp_file_full_path, 'user1': self.test_user1, 'user2': self.test_user2, 'user3': self.test_user3, 'user4': self.test_user4, 'user5': self.test_user5, 'user6': self.test_user6, 'proj1': self.test_proj1, 'task1': self.test_task1, 'task2': self.test_task2, } ) self.maxDiff = None tjp_content = tjp_sched.tjp_content # print tjp_content tjp_sched._clean_up() self.assertEqual(tjp_content, expected_tjp_content)
def test_tjp_file_content_is_correct(self): """testing if the tjp file content is correct """ tjp_sched = TaskJugglerScheduler() test_studio = Studio( name='Test Studio', timing_resolution=datetime.timedelta(minutes=30) ) test_studio.daily_working_hours = 9 test_studio.id = 564 test_studio.start = datetime.datetime(2013, 4, 16, 0, 7) test_studio.end = datetime.datetime(2013, 6, 30, 0, 0) test_studio.now = datetime.datetime(2013, 4, 16, 0, 0) tjp_sched.studio = test_studio tjp_sched._create_tjp_file() tjp_sched._create_tjp_file_content() import jinja2 expected_tjp_template = jinja2.Template( """# Generated By Stalker v0.2.5.2 project Studio_564 "Test Studio" 2013-04-16 - 2013-06-30 { timingresolution 30min now 2013-04-16-00:00 dailyworkinghours 9 weekstartsmonday workinghours mon 09:00 - 18:00 workinghours tue 09:00 - 18:00 workinghours wed 09:00 - 18:00 workinghours thu 09:00 - 18:00 workinghours fri 09:00 - 18:00 workinghours sat off workinghours sun off timeformat "%Y-%m-%d" scenario plan "Plan" trackingscenario plan } # resources resource resources "Resources" { resource User_3 "admin" resource User_28 "User1" resource User_30 "User2" resource User_31 "User3" resource User_33 "User4" resource User_34 "User5" resource User_35 "User6" } # tasks task Project_43 "Test Project 1" { task Task_44 "Task1" { effort 50.0h allocate User_28 { alternative User_31, User_33, User_34 select minallocated persistent }, User_30 { alternative User_31, User_33, User_34 select minallocated persistent } } task Task_45 "Task2" { effort 60.0h allocate User_28 { alternative User_31, User_33, User_34 select minallocated persistent }, User_30 { alternative User_31, User_33, User_34 select minallocated persistent } }} # reports taskreport breakdown "{{csv_path}}"{ formats csv timeformat "%Y-%m-%d-%H:%M" columns id, start, end, resources } """) expected_tjp_content = expected_tjp_template.render( { 'stalker': stalker, 'studio': test_studio, 'csv_path': tjp_sched.temp_file_full_path } ) # self.maxDiff = None tjp_content = tjp_sched.tjp_content # print tjp_content tjp_sched._clean_up() self.assertEqual(tjp_content, expected_tjp_content)