예제 #1
0
def test_edit_reset__edit_pending_do_nothing(create_user, ahj_obj):
    user = create_user()
    old_value = 'oldname'
    new_value = 'newname'
    set_obj_field(ahj_obj, 'AHJName', old_value)
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': None,
        'SourceTable': 'AHJ',
        'SourceRow': ahj_obj.pk,
        'SourceColumn': 'AHJName',
        'OldValue': old_value,
        'NewValue': new_value,
        'DateRequested': timezone.now(),
        'DateEffective': None,
        'ReviewStatus': 'P',
        'EditType': 'U',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    assert not views_edits.reset_edit(user, edit)
    edit_dict['OldValue'], edit_dict['NewValue'] = old_value, edit_dict[
        'OldValue']
    edit_dict['ReviewStatus'] = 'A'
    edit_dict['ApprovedBy'], edit_dict['DateEffective'] = user, timezone.now()
    assert not check_edit_exists(edit_dict)
    assert Edit.objects.all().count() == 1
예제 #2
0
def test_edit_reset__edit_deletion(parent_model_name, model_name,
                                   review_status, create_user,
                                   create_minimal_obj, ahj_obj):
    user = create_user()
    parent_obj = create_minimal_obj(parent_model_name)
    obj = create_minimal_obj(model_name)
    relation = obj.create_relation_to(parent_obj)
    set_obj_field(relation, relation.get_relation_status_field(),
                  review_status != 'A')
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user,
        'SourceTable': relation.__class__.__name__,
        'SourceRow': relation.pk,
        'SourceColumn': relation.get_relation_status_field(),
        'OldValue': True,
        'NewValue': False,
        'DateRequested': timezone.now(),
        'DateEffective': timezone.now(),
        'ReviewStatus': review_status,
        'IsApplied': review_status == 'A',
        'EditType': 'A',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    assert views_edits.reset_edit(user, edit)
    edit = Edit.objects.get(EditID=edit.EditID)
    assert edit_is_pending(edit)
    assert get_obj_field(
        relation,
        relation.get_relation_status_field()) == edit_dict['OldValue']
예제 #3
0
def test_edit_reset__edit_update(model_name, field_name, old_value, new_value,
                                 create_user, ahj_obj, create_minimal_obj,
                                 expected_value, add_enums):
    user = create_user()
    obj = create_minimal_obj(model_name)
    set_obj_field(obj, field_name, new_value)
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user,
        'SourceTable': model_name,
        'SourceRow': obj.pk,
        'SourceColumn': field_name,
        'OldValue': old_value,
        'NewValue': new_value,
        'DateRequested': timezone.now(),
        'DateEffective': timezone.now(),
        'ReviewStatus': 'A',
        'IsApplied': True,
        'EditType': 'U',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    assert views_edits.reset_edit(user, edit)
    assert edit_is_pending(edit)
    if expected_value == 'old_value':
        expected_value = get_value_or_enum_row(field_name, old_value)
    assert get_obj_field(obj, field_name) == expected_value
예제 #4
0
def test_edit_revert__edit_addition(parent_model_name, model_name, create_user,
                                    create_minimal_obj, ahj_obj):
    user = create_user()
    parent_obj = create_minimal_obj(parent_model_name)
    obj = create_minimal_obj(model_name)
    relation = obj.create_relation_to(parent_obj)
    set_obj_field(relation, relation.get_relation_status_field(), True)
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user,
        'SourceTable': relation.__class__.__name__,
        'SourceRow': relation.pk,
        'SourceColumn': relation.get_relation_status_field(),
        'OldValue': None,
        'NewValue': True,
        'DateRequested': timezone.now(),
        'DateEffective': timezone.now(),
        'ReviewStatus': 'A',
        'EditType': 'A',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    assert views_edits.revert_edit(user, edit)
    edit_dict['OldValue'], edit_dict['NewValue'] = edit_dict['NewValue'], False
    assert check_edit_exists(edit_dict)
    assert get_obj_field(
        relation,
        relation.get_relation_status_field()) == edit_dict['NewValue']
예제 #5
0
def test_apply_edits(ReviewStatus, DateEffective, create_user, ahj_obj):
    field_name = 'AHJName'
    old_value = 'oldname'
    new_value = 'newname'
    user = create_user()
    set_obj_field(ahj_obj, field_name, old_value)
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user if DateEffective is not None else None,
        'SourceTable': 'AHJ',
        'SourceRow': ahj_obj.pk,
        'SourceColumn': field_name,
        'OldValue': old_value,
        'NewValue': new_value,
        'DateRequested': timezone.now(),
        'DateEffective': DateEffective,
        'ReviewStatus': ReviewStatus,
        'IsApplied': False,
        'EditType': 'U',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    views_edits.apply_edits()
    ahj = AHJ.objects.get(AHJPK=ahj_obj.AHJPK)
    is_date_effective = (DateEffective.date() == datetime.date.today()
                         ) if DateEffective is not None else False
    edit_should_apply = is_date_effective and ReviewStatus == 'A'
    edit_is_applied = getattr(ahj, field_name) == new_value
    assert edit_is_applied == edit_should_apply
    edit = Edit.objects.get(EditID=edit.EditID)
    assert edit.IsApplied == edit_should_apply
예제 #6
0
def test_edit_make_pending(create_user, ahj_obj):
    user = create_user()
    set_obj_field(ahj_obj, 'AHJName', 'newername')
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user,
        'SourceTable': 'AHJ',
        'SourceRow': ahj_obj.pk,
        'SourceColumn': 'AHJName',
        'OldValue': 'oldname',
        'NewValue': 'newname',
        'DateRequested': timezone.now(),
        'DateEffective': timezone.now(),
        'ReviewStatus': 'R',
        'EditType': 'U',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    views_edits.edit_make_pending(edit)
    edit = Edit.objects.get(EditID=edit.EditID)
    assert edit_is_pending(edit)
예제 #7
0
def test_edit_reset__kwargs(force_resettable, skip_undo, create_user, ahj_obj):
    user = create_user()
    old_value = 'oldname'
    new_value = 'newname'
    later_value = 'newname_later'
    set_obj_field(ahj_obj, 'AHJName', later_value)
    edit_dict = {
        'ChangedBy': user,
        'ApprovedBy': user,
        'SourceTable': 'AHJ',
        'SourceRow': ahj_obj.pk,
        'SourceColumn': 'AHJName',
        'OldValue': old_value,
        'NewValue': new_value,
        'DateRequested': timezone.now(),
        'DateEffective': timezone.now(),
        'ReviewStatus': 'A',
        'IsApplied': True,
        'EditType': 'U',
        'AHJPK': ahj_obj
    }
    edit = Edit.objects.create(**edit_dict)
    edit_dict['OldValue'], edit_dict['NewValue'] = edit_dict[
        'NewValue'], later_value
    later_edit = Edit.objects.create(**edit_dict)
    assert views_edits.reset_edit(user,
                                  edit,
                                  force_resettable=force_resettable,
                                  skip_undo=skip_undo)
    edit = Edit.objects.get(EditID=edit.EditID)
    if force_resettable and not skip_undo:
        assert get_obj_field(ahj_obj, 'AHJName') == old_value
    elif force_resettable and skip_undo:
        assert get_obj_field(ahj_obj, 'AHJName') == later_value
        assert edit.OldValue == later_value
    assert edit.NewValue == new_value
    assert edit_is_pending(edit)