Пример #1
0
def test_log_split_internal_rates_for_different_usertypes(request):
    """
    Validate rollups for project entity:
    1. Internal rate for the admin user is split as
        a. Mon & Tue have a specific rate
        b. Wed, Thu & Fri have a different specific rate
    2. Add 4 variants of tasks
    4. Log time for all four
    """

    Fluent(request).user(
        'auto_te',
        'support').set_internalrate('RATE100').set_internalrate('RATE250', 3)

    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_2', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'cap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_bill'}])

    Fluent(request).user('auto_te') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_2').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_4').set_entries({'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
Пример #2
0
def test_log_nonbillable_for_billable_tasks_with_split_internalrates_for_different_usertypes(
        request):
    """
    Validate rollups for project entity:
    1. Internal rate for the admin user is split as
        a. Mon & Tue have a specific rate
        b. Wed, Thu & Fri have a different specific rate
    2. Add 4 variants of tasks
    3. Log non billable time for Task2 and Task4 which are billable tasks
        Billable tasks charged as Non Billable for custom internal rate
    """

    Fluent(request).user('auto_te',
                         'T&E').set_internalrate('RATE100').set_internalrate(
                             'RATE250', 3)

    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_2', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'cap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_bill'}])

    Fluent(request).user('auto_te') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_2').not_billable().set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_4').not_billable().set_entries({'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
Пример #3
0
def test_log_nonbillable_for_billable_tasks_for_different_usertypes(request):
    """
    Validate Rollups Page for Project Entity: Actual:
    1. Add Multipletasks(4 variants of tasks)
    2. Log non billable time for Task1 and Task2 which are billable tasks
    Billable tasks charged as Non Billable for default internal rate
    """
    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_2', 'type': 'cap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_nonbill'}])

    Fluent(request).user('auto_te', 'team') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').not_billable().set_entries(
        {'all_working_days': 5}).save() \
        .log('Auto_Task_2').not_billable().set_entries(
        {'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries(
        {'all_working_days': 5}).save() \
        .log('Auto_Task_4').set_entries(
        {'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
Пример #4
0
def test_log_with_different_internal_rate_for_different_usertypes(request):
    """
    Validate rollups for project entity:
    1. Internal rate for the admin user is changed before time is logged
    2. Add 4 variants of tasks
    4. Log time for all four
    """

    Fluent(request).user('auto_te', 'T&E').set_internalrate('RATE100')

    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_2', 'type': 'cap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_nonbill'}])

    Fluent(request).user('auto_te') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_2').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_4').set_entries({'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
def test_textbox(request, text_comb):
    """
    Validate data import for updation of two projects where special character is  in all string fields
    """
    Fluent(request).project('Project-1')
    Fluent(request).project('Project-2')

    Fluent(request). \
        data_import().update_for_entity('PROJECT') \
        .consider_entities(['Project-1', 'Project-2']) \
        .where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .set_fields({'description': text_comb}) \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
def test_udf_picklist_user_automation(request):
    """
    Validate data import for updation of two projects where special character is  in all string fields
    """
    Fluent(request).project('Project-1')
    Fluent(request).project('Project-2')

    Fluent(request). \
        data_import().update_for_entity('PROJECT') \
        .consider_entities(['Project-1', 'Project-2']) \
        .where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .set_fields({'UDF PEXS Picklist': 'TeamUser, Automation'}) \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
Пример #7
0
def test_dynamic_special_character_textbox_and_string(request):
    """
    Validate data import for updation of two portfolio where special character is in all string supporting fields
    """
    Fluent(request).portfolio('Portfolio-1')
    Fluent(request).portfolio('Portfolio-2')

    Fluent(request). \
        data_import().update_for_entity('PORTFOLIO') \
        .consider_entities(['Portfolio-1', 'Portfolio-2']) \
        .where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .turn_on_special_characters() \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
def test_captbill_nonbillable_log_different_user(request, usertype):
    """

    """
    Fluent(request).project() \
        .multipletasks([{'title': 'Task-1', 'type': 'cap_bill'},
                        {'title': 'Task-2', 'type': 'cap_bill'}])

    Fluent(request).user('auto-1', usertype) \
        .login() \
        .timesheet() \
        .log('Task-1').set_entries(entries={'monday': 2}).save() \
        .log('Task-2').set_entries().save() \
        .logout() \
        .verify_rollups('project')
def test_dynamic_special_character_string(request, text_comb):
    """
    Validate data import for updation of two issues where special character is in all string fields
    """
    Fluent(request).issue('Issue-1')
    Fluent(request).issue('Issue-2')

    Fluent(request). \
        data_import().update_for_entity('ISSUE') \
        .consider_entities(['Issue-1', 'Issue-2']) \
        .where_field_mapping_is('SAME') \
        .include_both_standard_and_udf_fields() \
        .set_fields({'string': text_comb}) \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
def test_import_select_list(request):
    """
    Validate data import for updation of two projects having &(ampersand) in values of the list field types
    """
    Fluent(request).project('Project-1')
    Fluent(request).project('Project-2')

    Fluent(request). \
        data_import().update_for_entity('PROJECT') \
        .consider_entities(['Project-1', 'Project-2']) \
        .where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .set_fields({'UDF PEXS Multiselect List': 'Time & Materials',
                     'UDF Multi Select Lookup/Status List (CheckBox) 51': 'Scope & Strategy'}) \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
Пример #11
0
def test_549startdate(request, dd_mm_yy_hh_mm_ss):
    """
    testing the api to set the task start date
    """
    date_time = datetime.strptime(dd_mm_yy_hh_mm_ss, '%d-%m-%Y-%H-%M-%S')
    start_date_time = date_time.strftime('%Y-%m-%dT%H:%M:%S.000')
    Fluent(request).task('task-1').set_start_date(start_date_time).verify()
def test_resource_with_same_lastname_and_similar_firstname(request):
    """
    Validate data import for updation of issues where resource with same last name and similar first name starting
    There was a reported issue on this
    """
    Fluent(request).issue('Issue-1')
    Fluent(request).issue('Issue-2')

    Fluent(request). \
        data_import().update_for_entity('ISSUE') \
        .consider_entities(['Issue-1', 'Issue-2']) \
        .where_field_mapping_is('SAME') \
        .include_both_standard_and_udf_fields() \
        .set_fields({'udf issu autocomplete list': 'QA_01, Full_Autoabc'}) \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
Пример #13
0
def test_completedate(request, dd_mm_yy):
    """
    testing the api to set the project completion date
    """
    date_time = datetime.strptime(dd_mm_yy, '%d-%m-%Y')
    complete_date_time = date_time.strftime('%Y-%m-%dT00:00:00.000')
    Fluent(request).project().set_complete_date(complete_date_time).verify()
Пример #14
0
def test_actuals(request):
    """
    This is to test the rollup at scope level after logging actual hours for scope and leaf tasks
    """
    # Create entities
    Fluent(request).project().task('Task-1').childtask('Task-1.1').childtask('Task-1.1.1') \
        .childtask('Task-1.1.2', parent='Task-1.1').childtask('Task-1.2', parent='Task-1')

    # Log timesheets and verify rollups
    Fluent(request).timesheet() \
        .log('Task-1').set_entries().save() \
        .log('Task-1.1').set_entries().save() \
        .log('Task-1.1.1').set_entries().save() \
        .log('Task-1.1.2').set_entries().save() \
        .log('Task-1.2').set_entries().save() \
        .verify_rollups('task')
Пример #15
0
 def login(self):
     userid = userpool.get_userid_from_pool(self.request, self.username)
     pwd = 'innotas'
     jsessionid = super().login_user(userid, pwd)
     userpool.update_current_user(self.request, self.username, jsessionid)
     from core.fluent import Fluent
     fluent = Fluent(self.request)
     return fluent
Пример #16
0
def test_captbill_logging_multitask(request):
    """
    This is to test the logging of capitalized and billable combinations of tasks
    """
    Fluent(request) \
        .multipletasks([
        {'title': 'Auto_Task_1'},
        {'title': 'Auto_Task_2', 'type': 'cap_nonbill'},
        {'title': 'Auto_Task_3', 'type': 'noncap_bill'},
        {'title': 'Auto_Task_4', 'type': 'cap_bill'}])

    Fluent(request).timesheet() \
        .log('Auto_Task_1').set_entries(entries={'monday': 8}).save() \
        .log('Auto_Task_2').set_entries(entries={'tuesday': 8}).save() \
        .log('Auto_Task_3').set_entries(entries={'wednesday': 8}).save() \
        .log('Auto_Task_4').set_entries(entries={'thursday': 8}).save() \
        .verify_rollups('project')
Пример #17
0
def test_log_admin_changes_resource_internal_split_rate_table_for_different_usertypes(
        request):
    """
    Validate rollups for project entity:
    1. Internal rate for the admin user is split as
        a. Mon & Tue have a specific rate
        b. Wed, Thu & Fri have a different specific rate
    2. Add 4 variants of tasks
    3. Log time for all four tasks
    4. Admin changes the internal rate table for the same period
        a. Mon, Tue, Wed, Thu & Fri with a new rate
    5. Validate the rollups at project level

    Expected result is project rollups should calculate with old rates(rates set at 1a & 1b steps) for the hours logged

    """

    Fluent(request).user('auto_te',
                         'T&E').set_internalrate('RATE100').set_internalrate(
                             'RATE250', 3)

    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_2', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'cap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_bill'}])

    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_2').not_billable().set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_4').set_entries({'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')

    Fluent(request).user('auto_te', 'T&E').set_internalrate('RATE90')

    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
Пример #18
0
def test_entries_for_different_usertypes(request):
    """
    This is to test the permissions of user type for the rollup at scope level after logging actual hours for a particular day
    """

    # Create entities
    Fluent(request) \
        .project().task('Task-1') \
        .childtask('Task-1.1')

    # User belonging to different usertypes logs timesheet
    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet() \
        .log('Task-1').set_entries(entries={'monday': 2}).save() \
        .log('Task-1.1').set_entries(entries={'monday': 2}).save() \
        .logout() \
        .verify_rollups('task')
Пример #19
0
def test_import_update_without_default_fields(request, field_mapping):
    """
    Validation of data import for project updation from excel sheet having all fields a specific value
    :param request: request object of pytest
    :param field_mapping: field_mapping from the paramterization which specifies the setting of field mapping required for this test
    :return:
    """
    Fluent(request).project('Project-1')
    Fluent(request).project('Project-2')
    Fluent(request).project('Project-3')

    Fluent(request) \
        .data_import().update_for_entity('project') \
        .consider_entities(['Project-1', 'Project-2', 'Project-3']) \
        .where_field_mapping_is(field_mapping) \
        .include_both_standard_and_udf_fields() \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
Пример #20
0
def test_demo_for_different_usertypes(request):
    """
    This is to test the rollup at scope level after logging actual hours for scope and leaf tasks
    """
    # Create entities
    Fluent(request) \
        .project().task('Task-1') \
        .childtask('Task-1.1') \
        .childtask('Task-1.1.1', parent='Task-1.1').childtask('Task-1.1.2', parent='Task-1.1')

    # Log timesheets and verify rollups
    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet() \
        .log('Task-1.1').set_entries().save() \
        .log('Task-1.1.1').set_entries().save() \
        .log('Task-1.1.2').set_entries().save() \
        .logout() \
        .verify_rollups('task')
def test_dynamic_special_character_textbox_and_string(request):
    """
    Validate data import for creation of two projects where special character is  in all string fields
    """
    Fluent(request). \
        data_import().create_for_entity('PROJECT') \
        .where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .turn_on_special_characters() \
        .populate_dynamic_data_to_excel_file(no_of_rows=2) \
        .import_file().verify()
Пример #22
0
def test_log_timeadmin_changes_rate_in_timesheet_page_for_different_usertypes(
        request):
    """
    Validate rollups for project entity:
    1. Internal rate for the admin user is split as
        a. Mon & Tue have a specific rate
        b. Wed, Thu & Fri have a different specific rate
    2. Add 4 variants of tasks
    3. Log time for all four tasks
    4. Timeadmin changes the internal rate for Mon for a specific task
    5. Validate rollups at project level

    Expected result is project rollups should calculate based on the new rate input by timeadmin
    """

    Fluent(request).user('auto_te',
                         'T&E').set_internalrate('RATE100').set_internalrate(
                             'RATE250', 3)

    Fluent(request) \
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'noncap_nonbill'},
                        {'title': 'Auto_Task_2', 'type': 'noncap_bill'},
                        {'title': 'Auto_Task_3', 'type': 'cap_nonbill'},
                        {'title': 'Auto_Task_4', 'type': 'cap_bill'}])

    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_2').set_entries({'all_working_days': 5}).save() \
        .log('Auto_Task_3').set_entries({'all_working_days': 5}).save() \
        .logout()

    Fluent(request).timeadmin().for_task('Auto_Task_1').for_user(
        'auto_te').on_date(1).update_internal_rate(150)

    Fluent(request).user('auto_te', 'T&E') \
        .login() \
        .timesheet().log('Auto_Task_4').not_billable().set_entries(
        {'all_working_days': 5}).save() \
        .logout() \
        .verify_rollups('project')
Пример #23
0
def test_import_update_with_default_fields(request, field_mapping):
    """
    Validation of dataimport for project updation from excel sheet having all fields a specific value except Status and Category fields.
    Status and Category should be taken from the default value which has been set prior to the import
    :param request: request object of pytest
    :param field_mapping: field_mapping from the paramterization which specifies the setting of field mapping required for this test
    :return:
    """
    Fluent(request).project('Project-1')
    Fluent(request).project('Project-2')
    Fluent(request).project('Project-3')

    Fluent(request) \
        .data_import().update_for_entity('project') \
        .consider_entities(['Project-1', 'Project-2', 'Project-3']) \
        .with_default_status('PROPOSED').with_default_category('CATEGORY1').where_field_mapping_is(field_mapping) \
        .remove_column('PROJECT STATUS').remove_column('PROJECT CATEGORY') \
        .include_both_standard_and_udf_fields() \
        .populate_dynamic_data_to_excel_file() \
        .import_file().verify()
def test_dynamic_special_character_textbox(request, text_comb):
    """
    Validate data import for creation of two issues where special character is  in all string fields
    """
    Fluent(request). \
        data_import().create_for_entity('ISSUE') \
        .where_field_mapping_is('SAME') \
        .include_both_standard_and_udf_fields() \
        .set_fields({'problem description': text_comb}) \
        .populate_dynamic_data_to_excel_file(no_of_rows=2) \
        .import_file().verify()
Пример #25
0
def test_entries(request):
    """
    This is to test the rollup at scope level after logging actual hours for a particular day
    """
    # Create entities
    Fluent(request) \
        .project().task('Task-1') \
        .childtask('Task-1.1') \
        .timesheet() \
        .log('Task-1.1').set_entries(entries={'monday': 2}).save() \
        .verify_rollups('task')
Пример #26
0
def test_captbill_nonbillable_charge_different_internal_rate(request):
    """
    Atom Test: Create a new user, and set internal rate
               Create multiple tasks with the default user
               Log time for task1 with new user
               Log time for task2 with default user
               Verify project rollups
    """
    Fluent(request).user('auto-1').set_internalrate('RATE100')

    Fluent(request).project()\
        .multipletasks([{'title': 'Auto_Task_1', 'type': 'cap_bill'},
                        {'title': 'Auto_Task_2', 'type': 'cap_bill'}])

    Fluent(request).user('auto-1', 'T&E') \
        .login() \
        .timesheet() \
        .log('Auto_Task_1').set_entries(entries={'monday': 2}).save() \
        .log('Auto_Task_2').set_entries().save() \
        .logout() \
        .verify_rollups('project')
Пример #27
0
def test_import_similar_only_udf(request):
    """
    Validate data import for creation of 5 asset when:
    a) dataimport field mapping is set to similar title based mapping
    b) file should have content for udf fields and mandatory udf fields
    """
    Fluent(request). \
        data_import().create_for_entity('ASSET') \
        .where_field_mapping_is('SIMILAR') \
        .include_only_udf_fields() \
        .populate_dynamic_data_to_excel_file(no_of_rows=5) \
        .import_file().verify()
Пример #28
0
def test_import_for_resource_with_middlename_in_pick_list(request):
    """
    Validate data import for creation of asses when:
        Data import xls has "ASSET ASSIGNED TO" field value with 'T&E, Automation'
    """
    Fluent(request). \
        data_import().create_for_entity('ASSET') \
        .where_field_mapping_is('SAME') \
        .include_both_standard_and_udf_fields() \
        .set_fields({'assigned to': 'TEUser, QA'}) \
        .populate_dynamic_data_to_excel_file(no_of_rows=1) \
        .import_file().verify()
Пример #29
0
def test_import_same(request):
    """
    Validate data import for creation of 5 asset when:
    a) dataimport field mapping is set to exact same title based mapping
    b) file should have content for all fields and mandatory udf fields
    """
    Fluent(request). \
        data_import().create_for_entity('ASSET') \
        .where_field_mapping_is('SAME') \
        .include_both_standard_and_udf_fields() \
        .populate_dynamic_data_to_excel_file(no_of_rows=5) \
        .import_file().verify()
def test_import_default_status_and_excel_status(request):
    """
    Validate data import for creation of 5 projects when:
    a) dataimport field mapping is set to exact same title based mapping
    b) Default status is set
    c) file should have contents for all fields
    """
    Fluent(request). \
        data_import().create_for_entity('PROJECT') \
        .with_default_status('PROPOSED').where_field_mapping_is('SAME').include_both_standard_and_udf_fields() \
        .populate_dynamic_data_to_excel_file(no_of_rows=5) \
        .import_file().verify()