Limit Test Plan field change

Question ID: 105008
0
0

I am trying to limit the status field in the test plan so that once the status has changed to a certain status the user cannot change the status again and another user must change the status from that point. Basically we are trying to enforce a set of checks and balances so that one user cannot change the status from "Design" to "Ready" alone. We would also like to include a field to hold the last user to put the test case into the "Design" status so that they are aware that they were the last to change the status to "Design" and are unable to change it. Does anyone have an example of how this could be accomplished?

Marked as spam
Posted by (Questions: 92, Answers: 3)
Asked on May 10, 2013 8:09 pm
10 views
Answers (1)
1
Private answer

First create a new user field in Test under Project Entities in Project Customization. This is the field that we will use to hold the user that last changed the field to ''Design'' once that user has changed the value to Design they should not be able to change the status again. In a sense what we are doing is locking the test when it is changed to ''Design'' so that the user that last made the change might not try to circumvent the rules by changing the status to something else and then try and jump straight to ''Ready''

I created a field to hold the value of the user that last changed the test to Design so that we can see who changed the status to ''Design'', in the workflow I made the field read only so that a user might not try to change the field to ''circumvent the rules'' of the code and change the value of the Status field. In my environment this field name was ''TS_USER_01'' you will need to replace this value in the code with the name of the field that you use to hold the user name.

In the select case you will need to change the values to match what you have for your ''Plan Status'' project list, they currently have entries for my ''Plan Status'' project list. You should not need to include ''Design'' since it does not matter if the field is changed from ''Design'' back to ''Design'' just so that it is not changed to any other status.

**Note: This is just an example, use code at your own risk, you will need to change this code to apply to your environment**

In the workflow code (place the code pieces into the same subs that I did):

Sub Test_MoveTo
On Error Resume Next
Test_Fields.field(''TS_USER_01'').IsReadOnly=true
On Error GoTo 0
End Sub

Sub Test_FieldChange(FieldName)
On Error Resume Next
'This sets the user name field to the user name that changes the status to ''Design''
If Test_Fields.field(''TS_STATUS'').IsModified=true then
if Test_Fields.field(''TS_STATUS'').Value = ''Design'' then
Test_Fields.field(''TS_USER_01'').IsReadOnly=false
Test_Fields.field(''TS_USER_01'').Value = User.UserName
Test_Fields.field(''TS_USER_01'').IsReadOnly=true
end if
End If

On Error GoTo 0
End Sub

Function Test_FieldCanChange(FieldName, NewValue)
On Error Resume Next

'This select case ensures that the user that last changed the status to ''Design'' can no longer
'change the status of the test. Each case other than ''Design'' needs an option so that the user
'cannot change the status once they have changed it to ''Design''
Test_FieldCanChange = DefaultRes
Select Case NewValue
Case ''Ready''
If FieldName=''TS_STATUS'' and Test_Fields.field(''TS_USER_01'').value = user.UserName then
msgbox ''Current user has already changed the status to Design and cannot change current status''
Test_FieldCanChange=FALSE
End If
Case ''Imported''
If FieldName=''TS_STATUS'' and Test_Fields.field(''TS_USER_01'').value = user.UserName then
msgbox ''Current user has already changed the status to Design and cannot change current status''
Test_FieldCanChange=FALSE
End If
Case ''Repair''
If FieldName=''TS_STATUS'' and Test_Fields.field(''TS_USER_01'').value = user.UserName then
msgbox ''Current user has already changed the status to Design and cannot change current status''
Test_FieldCanChange=FALSE
End If
End Select

On Error GoTo 0
End Function

Marked as spam
Posted by (Questions: 0, Answers: 340)
Answered on May 10, 2013 8:11 pm