Suppose I have the following generic workflow that I'd like to test:
CreateObject --> AddItemsToObject --> SaveObject --> ChangeObjectToFirstState --> ChangeObjectToSecondDependentOnBeingInFirstState --> etc...
Should I:
A) Write a test case for each of those states in their entirety - IE, CreateObject will test whether the object is properly created, AddItemsToObject will use a copy of the code CreateObject used, and then test whether adding items to the object is properly handled, SaveObject will use a copy of the code AddItemsToObject used, and then save the object to the database and test whether it was properly saved, etc...
B) Write the test case for CreateObject, and have a successful result return a created object, which is then used by AddItemsToObject as the object that items are being added to, which is then used by SaveObject as the object being saved, etc...
C) Not bother splitting each step of the chain into separate test cases, and just write a single test case for each complete chain
I've tried searching for other examples that might answer this question to no avail - if it has already been answered thoroughly, please link me the appropriate question :)
* EDIT *
To re-word this a bit so that it's more of a question:
Is there any specific reason not to write your test cases for a workflow using a chain-based approach?
In other words, for a multi-stage workflow, are there any specific reasons not to first call the test case for advancing an object from State #2 to State #3 when implementing the test case for advancing an object from State #3 to State #4?