Task #6736
Story #6723: test v2 MN and CN buildouts
determine reuse design / strategy
100%
Description
developed (with Andrei) CommonCallAdapter and ContextAwareAdapter to allow splitting out of test implementations into separate classes called by the JUnit test methods. CommonCallAdapter is a versionless wrapper that chooses the right NodeFactory for building either a v1.MNode, v2.MNode, v1.CNode, or v2.CNode based on parameters given to the constructor.
The design is to categorize methods into those in common between nodeType and version by API, and have interfaces for each: {API}TestDefinitions, MN{API}TestDefinitions, CN{API}TestDefinitions, V1{API}TestDefinitions, V2{API}TestDefinitions.
Also have implementation classes for each definition class that extend ContextAwareAdapter.
The JUnit IT classes implement the appropriate API test definition classes, and implement non-sharable test implementations.
For example:
CoreTestDefinitions, CoreTestImplementations
MNCoreTestDefinitions, MNCoreTestImplementations
CNCoreTestDefinitions, CNCoreTestImplementations
V1CoreTestDefinitions, V1CoreTestImplementations
V2CoreTestDefinitions, V2CoreTestImplementations
public class MNodeV1CoreIT implements CoreTestDefinitions, MNCoreTestDefinitions, V1CoreTestDefinitions extends ContextAwareTestCaseDataone {
CoreTestDefinitions coreTests = new CoreTestImplementation(this); MNCoreTestDefinitions mnCoreTests = new MNCoreTestImplementations(this); V1CoreTestDefinitions v1CoreTests = new V1CoreTestImplementations(this); @Test public void testPing() { coreTests.testPing("v1", getNodeUnderTest()); } etc...
}
History
#1 Updated by Rob Nahf almost 10 years ago
- Description updated (diff)
#2 Updated by Rob Nahf almost 10 years ago
- Status changed from In Progress to In Review
- Parent task changed from #6727 to #6723
#3 Updated by Rob Nahf almost 10 years ago
- Status changed from In Review to In Progress
#4 Updated by Rob Nahf almost 10 years ago
Thorough authorization tests were already abstracted in version 1 of d1_integration (so we could test authorization against Query solr implementations, so special handling is needed for these classes. These tests abstract out which API method is used to test authorization decisions, so each method implementation doesn't have to be wrapped for version or node type.
In v1, the abstract class extends ContextAwareTestCaseDataone, and it might make sense to continue that, or make the concrete subclasses independent test cases.
#5 Updated by Rob Nahf almost 10 years ago
- Status changed from In Progress to Closed
- translation missing: en.field_remaining_hours set to 0
- % Done changed from 80 to 100