def test_wrong_id_format(self): s1 = { 'parent': [ 'vn:5543379:5543376:433833.000:244407.000:76125.000', '2016-03-15T03:37:56.217Z' ] } with self.assertRaisesRegexp(ValueError, "Invalid state provided"): state.parse_state(json.dumps(s1))
def test_correct_node_state(self): s1 = {'edition_time': '2011-12-05T13:51:36.955Z'} ps1 = state.parse_state(json.dumps(s1)) cursor = connection.cursor() checks1 = state.collect_state_checks(247, ps1, cursor, node=True) state.check_state(ps1, checks1, cursor)
def test_wrong_node_state(self): s1 = {'edition_time': '2016-03-15T03:37:56.217Z'} ps1 = state.parse_state(json.dumps(s1)) cursor = connection.cursor() checks1 = state.collect_state_checks(247, ps1, cursor, node=True) self.assertEqual(len(checks1), 1) self.assertRaises(state.StateMatchingError, lambda: state.check_state(ps1, checks1, cursor)) s2 = {'edition_time': '2011-12-05T13:51:36.855Z'} ps2 = state.parse_state(json.dumps(s2)) checks2 = state.collect_state_checks(247, ps2, cursor, node=True) self.assertEqual(len(checks2), 1) self.assertRaises(state.StateMatchingError, lambda: state.check_state(ps2, checks2, cursor))
def test_correct_node_state(self): s1 = { 'edition_time': '2011-12-05T13:51:36.955Z' } ps1 = state.parse_state(json.dumps(s1)) cursor = connection.cursor() checks1 = state.collect_state_checks(247, ps1, cursor, node=True) state.check_state(ps1, checks1, cursor)
def test_wrong_node_state(self): s1 = { 'edition_time': '2016-03-15T03:37:56.217Z' } ps1 = state.parse_state(json.dumps(s1)) cursor = connection.cursor() checks1 = state.collect_state_checks(247, ps1, cursor, node=True) self.assertEqual(len(checks1), 1) self.assertRaises(state.StateMatchingError, lambda: state.check_state(ps1, checks1, cursor)) s2 = { 'edition_time': '2011-12-05T13:51:36.855Z' } ps2 = state.parse_state(json.dumps(s2)) checks2 = state.collect_state_checks(247, ps2, cursor, node=True) self.assertEqual(len(checks2), 1) self.assertRaises(state.StateMatchingError, lambda: state.check_state(ps2, checks2, cursor))
def test_check_disabling(self): no_check_state = {"nocheck": True} s = state.parse_state(json.dumps(no_check_state)) self.assertEqual(s, no_check_state) self.assertTrue(state.is_disabled(s)) s2 = state.make_nocheck_state(parsed=True) self.assertEqual(s, s2) s3 = state.make_nocheck_state(parsed=False) self.assertEqual(json.dumps(no_check_state), s3)
def test_check_disabling(self): no_check_state = { "nocheck": True } s = state.parse_state(json.dumps(no_check_state)) self.assertEqual(s, no_check_state) self.assertTrue(state.is_disabled(s)) s2 = state.make_nocheck_state(parsed=True) self.assertEqual(s, s2) s3 = state.make_nocheck_state(parsed=False) self.assertEqual(json.dumps(no_check_state), s3)
def test_state_parsing(self): self.assertRaises(ValueError, lambda: state.parse_state(None)) s1 = {'edition_time': "Timestamp"} parsed_state = state.parse_state(json.dumps(s1)) self.assertEqual(parsed_state['edition_time'], "Timestamp") # Reject parents with wrong dimension and type self.assertRaises( ValueError, lambda: state.parse_state("{'parent': [247, '', 1]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'parent':[247]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'parent': 247}")) # Accept parents with correct dimension s2 = state.parse_state('{"parent": [247, "Timestamp"]}') self.assertEqual(s2['parent'][0], 247) self.assertEqual(s2['parent'][1], "Timestamp") self.assertRaises( ValueError, lambda: state.parse_state("{'children': [[247, '', 1]]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'children': [[247]]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'children': [247]}")) # Accept parents with correct dimension s_child = state.parse_state('{"children": [[247, "Timestamp"]]}') self.assertEqual(s_child['children'][0][0], 247) self.assertEqual(s_child['children'][0][1], "Timestamp") self.assertRaises( ValueError, lambda: state.parse_state('{"links": [[382, "", 1]]}')) self.assertRaises(ValueError, lambda: state.parse_state('{"links": [[382]]}')) self.assertRaises(ValueError, lambda: state.parse_state('{"links": [382]}')) # Accept parents with correct dimension s_links = state.parse_state('{"links": [[382, "Timestamp"]]}') self.assertEqual(s_links['links'][0][0], 382) self.assertEqual(s_links['links'][0][1], "Timestamp") self.assertRaises( ValueError, lambda: state.parse_state( '[[247, "Timestamp1"], [433, "Timestamp2", 1]]')) self.assertRaises( ValueError, lambda: state.parse_state( '[[247, "Timestamp1"], [], [433, "Timestamp2"]]')) s_multinode = state.parse_state( '[[247, "Timestamp1"], [433, "Timestamp2"]]') self.assertEqual(s_multinode[0][0], 247) self.assertEqual(s_multinode[0][1], "Timestamp1") self.assertEqual(s_multinode[1][0], 433) self.assertEqual(s_multinode[1][1], "Timestamp2")
def test_state_parsing(self): self.assertRaises(ValueError, lambda: state.parse_state(None)) s1 = {'edition_time': "Timestamp"} parsed_state = state.parse_state(json.dumps(s1)) self.assertEqual(parsed_state['edition_time'], "Timestamp") # Reject parents with wrong dimension and type self.assertRaises(ValueError, lambda: state.parse_state("{'parent': [247, '', 1]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'parent':[247]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'parent': 247}")) # Accept parents with correct dimension s2 = state.parse_state('{"parent": [247, "Timestamp"]}') self.assertEqual(s2['parent'][0], 247) self.assertEqual(s2['parent'][1], "Timestamp") self.assertRaises(ValueError, lambda: state.parse_state("{'children': [[247, '', 1]]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'children': [[247]]}")) self.assertRaises(ValueError, lambda: state.parse_state("{'children': [247]}")) # Accept parents with correct dimension s_child = state.parse_state('{"children": [[247, "Timestamp"]]}') self.assertEqual(s_child['children'][0][0], 247) self.assertEqual(s_child['children'][0][1], "Timestamp") self.assertRaises(ValueError, lambda: state.parse_state('{"links": [[382, "", 1]]}')) self.assertRaises(ValueError, lambda: state.parse_state('{"links": [[382]]}')) self.assertRaises(ValueError, lambda: state.parse_state('{"links": [382]}')) # Accept parents with correct dimension s_links = state.parse_state('{"links": [[382, "Timestamp"]]}') self.assertEqual(s_links['links'][0][0], 382) self.assertEqual(s_links['links'][0][1], "Timestamp") self.assertRaises(ValueError, lambda: state.parse_state( '[[247, "Timestamp1"], [433, "Timestamp2", 1]]')) self.assertRaises(ValueError, lambda: state.parse_state( '[[247, "Timestamp1"], [], [433, "Timestamp2"]]')) s_multinode = state.parse_state( '[[247, "Timestamp1"], [433, "Timestamp2"]]') self.assertEqual(s_multinode[0][0], 247) self.assertEqual(s_multinode[0][1], "Timestamp1") self.assertEqual(s_multinode[1][0], 433) self.assertEqual(s_multinode[1][1], "Timestamp2")
def test_wrong_id_format(self): s1 = { 'parent': ['vn:5543379:5543376:433833.000:244407.000:76125.000', '2016-03-15T03:37:56.217Z'] } with self.assertRaisesRegexp(ValueError, "Invalid state provided"): state.parse_state(json.dumps(s1))