Skip to content
Snippets Groups Projects
Unverified Commit 17758849 authored by Stefano Borini's avatar Stefano Borini Committed by GitHub
Browse files

Merge pull request #166 from force-h2020/102-changes-slots

Changes slots now uses traits metadata instead of requiring setting the event
parents 29c66451 8858d870
No related branches found
No related tags found
No related merge requests found
from traits.api import ABCHasStrictTraits, Instance, List, Event
from traits.api import (
ABCHasStrictTraits, Instance, List, Event, on_trait_change
)
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
......@@ -49,3 +51,10 @@ class BaseDataSourceModel(ABCHasStrictTraits):
x.__getstate__() for x in self.output_slot_info
]
return state
@on_trait_change("+changes_slots")
def _trigger_changes_slots(self, obj, name, new):
changes_slots = self.traits()[name].changes_slots
if changes_slots:
self.changes_slots = True
import unittest
from traits.api import Int
from traits.testing.api import UnittestTools
from force_bdss.core.input_slot_info import InputSlotInfo
from force_bdss.core.output_slot_info import OutputSlotInfo
from force_bdss.data_sources.base_data_source_model import BaseDataSourceModel
from force_bdss.tests.dummy_classes.data_source import DummyDataSourceModel
try:
......@@ -13,9 +16,18 @@ from force_bdss.data_sources.base_data_source_factory import \
BaseDataSourceFactory
class TestBaseDataSourceModel(unittest.TestCase):
class ChangesSlotsModel(BaseDataSourceModel):
a = Int()
b = Int(changes_slots=True)
c = Int(changes_slots=False)
class TestBaseDataSourceModel(unittest.TestCase, UnittestTools):
def setUp(self):
self.mock_factory = mock.Mock(spec=BaseDataSourceFactory)
def test_getstate(self):
model = DummyDataSourceModel(mock.Mock(spec=BaseDataSourceFactory))
model = DummyDataSourceModel(self.mock_factory)
self.assertEqual(
model.__getstate__(),
{
......@@ -64,3 +76,15 @@ class TestBaseDataSourceModel(unittest.TestCase):
}
]
})
def test_changes_slots(self):
model = ChangesSlotsModel(self.mock_factory)
with self.assertTraitDoesNotChange(model, "changes_slots"):
model.a = 5
with self.assertTraitChanges(model, "changes_slots"):
model.b = 5
with self.assertTraitDoesNotChange(model, "changes_slots"):
model.c = 5
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment