def test_get_children_json(self):
        rest = _RestProxyForTest()
        adam_objects = AdamObjects(rest, 'MyType')

        rest.expect_get("/adam_object/by_parent/MyType/uuid1", 200, {
            'childTypes': ['ChildType'],
            'childUuids': ['childUuid1']
        })
        rest.expect_get("/adam_object/single/ChildType/childUuid1", 200,
                        {'anyJson': 5})
        rest.expect_get(
            "/adam_object/runnable_state/single/ChildType/childUuid1", 200, {
                'uuid': 'childUuid1',
                'calculationState': 'COMPLETED'
            })
        children_json = adam_objects._get_children_json('uuid1')
        self.assertEqual(1, len(children_json))
        child_json, child_runnable_state, child_type = children_json[0]
        self.assertEqual({'anyJson': 5}, child_json)
        self.assertEqual('childUuid1', child_runnable_state.get_uuid())
        self.assertEqual('COMPLETED', child_runnable_state.get_calc_state())
        self.assertIsNone(child_runnable_state.get_error())
        self.assertEqual('ChildType', child_type)

        rest.expect_get("/adam_object/by_parent/MyType/uuid1", 404, {})
        json = adam_objects._get_children_json('uuid1')
        self.assertEqual([], json)

        rest.expect_get("/adam_object/by_parent/MyType/uuid1", 403, {})
        with self.assertRaises(RuntimeError):
            adam_objects._get_children_json('uuid1')
    def get_children(self, uuid):
        child_response_list = AdamObjects._get_children_json(self, uuid)

        children = []
        for childJson, child_runnable_state, child_type in child_response_list:
            # All child types should be SinglePropagation, but ignore those
            # that aren't just in case.
            if not child_type == 'SinglePropagation':
                print('Skipping child of unexpected type ' + child_type)
                continue

            # Values in [] are guaranteed to be present. Values in .get() may be missing.
            childOpmParams = OpmParams.fromJsonResponse(
                childJson['propagationParameters']['opm'])
            childPropParams = PropagationParams.fromJsonResponse(
                childJson['propagationParameters'],
                childJson.get('description'))
            childProp = SinglePropagation(childPropParams, childOpmParams)
            childProp.set_uuid(childJson['uuid'])
            childProp.set_runnable_state(child_runnable_state)
            childProp.set_ephemeris(childJson.get('ephemeris'))
            childProp.set_final_state_vector(childJson.get('finalStateVector'))

            children.append(childProp)

        return children