def test_beamtime_roundtrip(self): # This includes checking that a new uid is only generated once # and persists thereafter. bt = Beamtime('Simon', '123', [], wavelength=0.1828) reloaded_bt = Beamtime.from_yaml(bt.to_yaml()) os.remove(bt.filepath) self.assertEqual(reloaded_bt, bt)
def test_beamtime_roundtrip(self): # This includes checking that a new uid is only generated once # and persists thereafter. bt = Beamtime("Simon", "123", [], wavelength=0.1828) reloaded_bt = Beamtime.from_yaml(bt.to_yaml()) os.remove(bt.filepath) self.assertEqual(reloaded_bt, bt)
def test_yaml_sync(self): """Updating the object immediately, automatically updates the file.""" # Adding a field syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_update='before') bt['new_field'] = 'test' with open(bt.filepath, 'r') as f: reloaded_bt = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt['new_field'], 'test') self.assertEqual(reloaded_bt, bt) # Setting to an existing field syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_update='before') with open(bt.filepath, 'r') as f: reloaded_bt_before_change = bt.from_yaml(f) bt['field_to_update'] = 'after' with open(bt.filepath, 'r') as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt_before_change['field_to_update'], 'before') self.assertEqual(reloaded_bt_after_change['field_to_update'], 'after') self.assertEqual(reloaded_bt_after_change, bt) # Updating syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_update='before') with open(bt.filepath, 'r') as f: reloaded_bt_before_change = bt.from_yaml(f) bt.update(field_to_update='after') with open(bt.filepath, 'r') as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt_before_change['field_to_update'], 'before') self.assertEqual(reloaded_bt_after_change['field_to_update'], 'after') self.assertEqual(reloaded_bt_after_change, bt) # Deleting a field syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_remove='before') with open(bt.filepath, 'r') as f: reloaded_bt_before_change = bt.from_yaml(f) del bt['field_to_remove'] with open(bt.filepath, 'r') as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertTrue('field_to_remove' in reloaded_bt_before_change) self.assertTrue('field_to_remove' not in reloaded_bt_after_change) self.assertEqual(reloaded_bt_after_change, bt) # Popping a field syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_remove='before') with open(bt.filepath, 'r') as f: reloaded_bt_before_change = bt.from_yaml(f) bt.pop('field_to_remove') with open(bt.filepath, 'r') as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(self.bt.filepath) self.assertTrue('field_to_remove' in reloaded_bt_before_change) self.assertTrue('field_to_remove' not in reloaded_bt_after_change) self.assertEqual(reloaded_bt_after_change, bt) # setdefault syncs bt = Beamtime('Simon', '123', [], wavelength=0.1828, field_to_update='before') bt.setdefault('new_field', 'test') with open(bt.filepath, 'r') as f: reloaded_bt = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt['new_field'], 'test') self.assertEqual(reloaded_bt, bt)
def test_yaml_sync(self): """Updating the object immediately, automatically updates the file.""" # Adding a field syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_update="before") bt["new_field"] = "test" with open(bt.filepath, "r") as f: reloaded_bt = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt["new_field"], "test") self.assertEqual(reloaded_bt, bt) # Setting to an existing field syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_update="before") with open(bt.filepath, "r") as f: reloaded_bt_before_change = bt.from_yaml(f) bt["field_to_update"] = "after" with open(bt.filepath, "r") as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt_before_change["field_to_update"], "before") self.assertEqual(reloaded_bt_after_change["field_to_update"], "after") self.assertEqual(reloaded_bt_after_change, bt) # Updating syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_update="before") with open(bt.filepath, "r") as f: reloaded_bt_before_change = bt.from_yaml(f) bt.update(field_to_update="after") with open(bt.filepath, "r") as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt_before_change["field_to_update"], "before") self.assertEqual(reloaded_bt_after_change["field_to_update"], "after") self.assertEqual(reloaded_bt_after_change, bt) # Deleting a field syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_remove="before") with open(bt.filepath, "r") as f: reloaded_bt_before_change = bt.from_yaml(f) del bt["field_to_remove"] with open(bt.filepath, "r") as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(bt.filepath) self.assertTrue("field_to_remove" in reloaded_bt_before_change) self.assertTrue("field_to_remove" not in reloaded_bt_after_change) self.assertEqual(reloaded_bt_after_change, bt) # Popping a field syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_remove="before") with open(bt.filepath, "r") as f: reloaded_bt_before_change = bt.from_yaml(f) bt.pop("field_to_remove") with open(bt.filepath, "r") as f: reloaded_bt_after_change = bt.from_yaml(f) os.remove(self.bt.filepath) self.assertTrue("field_to_remove" in reloaded_bt_before_change) self.assertTrue("field_to_remove" not in reloaded_bt_after_change) self.assertEqual(reloaded_bt_after_change, bt) # setdefault syncs bt = Beamtime("Simon", "123", [], wavelength=0.1828, field_to_update="before") bt.setdefault("new_field", "test") with open(bt.filepath, "r") as f: reloaded_bt = bt.from_yaml(f) os.remove(bt.filepath) self.assertEqual(reloaded_bt["new_field"], "test") self.assertEqual(reloaded_bt, bt)
def test_beamtime_roundtrip(self): # This includes checking that a new uid is only generated once # and persists thereafter. reloaded_bt = Beamtime.from_yaml(self.bt.to_yaml()) os.remove(self.bt.filepath) self.assertEqual(reloaded_bt, self.bt)