def test_insert_double_edge_in(self): with self.g.session_scope() as s: case = md.Case('case_id_1') sample1 = md.Sample('sample_id_1') sample2 = md.Sample('sample_id_2') case.samples = [sample1, sample2] s.merge(case)
def test_delete_dst_association_proxy(self): with self.g.session_scope() as s: case = md.Case('case_id_1') aliquot = md.Aliquot('aliquot_id_1') sample = md.Sample('sample_id_1') aliquot.samples = [sample] sample.cases = [case] s.merge(case)
def test_insert_update_children(self): with self.g.session_scope() as s: aliquot = s.merge(md.Aliquot('aliquot_id_1')) sample = s.merge(md.Sample('sample_id_1')) aliquot.samples = [sample] s.merge(md.Case('case_id_1')) with self.g.session_scope() as s: case = self.g.nodes(md.Case).one() sample = self.g.nodes(md.Sample).one() sample.cases = [case]
def test_insert_double_edge_out(self): with self.g.session_scope() as s: case1 = md.Case('case_id_1') case2 = md.Case('case_id_2') sample = md.Sample('sample_id_1') sample.cases = [case1, case2] s.merge(sample) with self.g.session_scope() as s: sample = self.g.nodes(md.Sample).subq_path('cases').one() assert {c.node_id for c in sample._related_cases} == \ {c.node_id for c in [case1, case2]}
def test_no_datetime_update_for_new_edge(self): """Verify new inbound edges do not affect a node's updated datetime.""" with self.g.session_scope() as s: s.merge(md.Case('case1')) with self.g.session_scope() as s: case = self.g.nodes(md.Case).one() old_created_datetime = case.created_datetime old_updated_datetime = case.updated_datetime sample = s.merge(md.Sample('sample1')) case.samples.append(sample)
def test_preserve_timestamps(self): """Confirm cache changes do not affect the case's timestamps.""" with self.g.session_scope() as s: s.merge(md.Case('case_id_1')) with self.g.session_scope(): case = self.g.nodes(md.Case).one() old_created_datetime = case.created_datetime old_updated_datetime = case.updated_datetime # Test addition of cache edges. sample = md.Sample('sample_id_1') portion = md.Portion('portion_id_1') analyte = md.Analyte('analyte_id_1') aliquot = md.Aliquot('aliquot_id_1') sample.cases = [case] portion.samples = [sample] analyte.portions = [portion] aliquot.analytes = [analyte] sample2 = md.Sample('sample_id_2') sample2.cases = [case]
def test_insert_multiple_edges(self): with self.g.session_scope() as s: case = md.Case('case_id_1') sample = md.Sample('sample_id_1') portion = md.Portion('portion_id_1') analyte = md.Analyte('analyte_id_1') aliquot = md.Aliquot('aliquot_id_1') general_file = md.File('file_id_1') sample.cases = [case] portion.samples = [sample] analyte.portions = [portion] aliquot.analytes = [analyte] general_file.aliquots = [aliquot] s.merge(case)
def test_delete_one_parent(self): with self.g.session_scope() as s: case1 = md.Case('case_id_1') case2 = md.Case('case_id_2') sample = md.Sample('sample_id_1') sample.cases = [case1, case2] s.merge(sample) with self.g.session_scope() as s: case1 = self.g.nodes(md.Case).ids('case_id_1').one() s.delete(case1) with self.g.session_scope() as s: sample = self.g.nodes(md.Sample).one() assert sample._related_cases == [case2]
def test_type_validation(self): f = md.File() with self.assertRaises(ValidationError): f.file_size = '0' f.file_size = 0 f = md.File() with self.assertRaises(ValidationError): f.file_name = 0 f.file_name = '0' s = md.Sample() with self.assertRaises(ValidationError): s.is_ffpe = 'false' s.is_ffpe = False s = md.Slide() with self.assertRaises(ValidationError): s.percent_necrosis = '0.0' s.percent_necrosis = 0.0
def test_insert_single_association_proxy(self): with self.g.session_scope() as s: case = md.Case('case_id_1') sample = md.Sample('sample_id_1') sample.cases = [case] s.merge(sample)
def test_insert_single_edge(self): with self.g.session_scope() as s: case = s.merge(md.Case('case_id_1')) sample = s.merge(md.Sample('sample_id_1')) edge = md.SampleDerivedFromCase(sample.node_id, case.node_id) s.merge(edge)
def test_delete_parent(self): with self.g.session_scope() as s: case = md.Case('case_id_1') sample = md.Sample('sample_id_1') sample.cases = [case] s.merge(case)