Skip to content

Commit

Permalink
Added origin and index informations in observer (for informs in delet…
Browse files Browse the repository at this point in the history
…e action)
  • Loading branch information
SrMouraSilva committed Nov 24, 2016
1 parent 46c951a commit 0f33a04
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 44 deletions.
17 changes: 8 additions & 9 deletions pluginsmanager/banks_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,12 @@ def _banks_observer(self, update_type, bank, index):
or update_type == UpdateType.UPDATED:
bank.manager = self
bank.observer = self.observer_manager

self.observer_manager.on_bank_updated(bank, update_type)

if update_type == UpdateType.DELETED:
elif update_type == UpdateType.DELETED:
bank.manager = None
bank.observer_manager = MagicMock()

self.observer_manager.on_bank_updated(bank, update_type, index=index, origin=self)


class ObserverManager(UpdatesObserver):
def __init__(self):
Expand All @@ -52,15 +51,15 @@ def on_current_patch_change(self, patch, token=None):
for observer in self.observers:
observer.on_current_patch_change(patch, token)

def on_bank_updated(self, bank, update_type, token=None):
def on_bank_updated(self, bank, update_type, token=None, **kwargs):
for observer in self.observers:
observer.on_bank_updated(bank, update_type, token)
observer.on_bank_updated(bank, update_type, token, **kwargs)

def on_patch_updated(self, patch, update_type, token=None):
def on_patch_updated(self, patch, update_type, token=None, **kwargs):
for observer in self.observers:
observer.on_patch_updated(patch, update_type, token)
observer.on_patch_updated(patch, update_type, token, **kwargs)

def on_effect_updated(self, effect, update_type, token=None):
def on_effect_updated(self, effect, update_type, token=None, **kwargs):
for observer in self.observers:
observer.on_effect_updated(effect, update_type, token)

Expand Down
6 changes: 3 additions & 3 deletions pluginsmanager/mod_host/mod_host.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,19 @@ def on_current_patch_change(self, patch, token=None):
for effect in patch.effects:
self.on_effect_updated(effect, UpdateType.CREATED)

def on_bank_updated(self, bank, update_type, token=None):
def on_bank_updated(self, bank, update_type, token=None, **kwargs):
if self.patch is not None \
and bank != self.patch.bank:
return
pass

def on_patch_updated(self, patch, update_type, token=None):
def on_patch_updated(self, patch, update_type, token=None, **kwargs):
if patch != self.patch:
return

self.on_current_patch_change(patch)

def on_effect_updated(self, effect, update_type, token=None):
def on_effect_updated(self, effect, update_type, token=None, **kwargs):
if effect.patch != self.patch:
return

Expand Down
12 changes: 8 additions & 4 deletions pluginsmanager/model/bank.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,21 @@ def observer(self, observer):
patch.observer = observer

def _patches_observer(self, update_type, patch, index):
kwargs = {
'index': index,
'origin': self
}

if update_type == UpdateType.CREATED \
or update_type == UpdateType.UPDATED:
patch.bank = self
patch.observer = self.observer

self.observer.on_patch_updated(patch, update_type)

if update_type == UpdateType.DELETED:
elif update_type == UpdateType.DELETED:
patch.bank = None
patch.observer = MagicMock()

self.observer.on_patch_updated(patch, update_type, **kwargs)

@property
def json(self):
"""
Expand Down
12 changes: 8 additions & 4 deletions pluginsmanager/model/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,24 @@ def observer(self, observer):
effect.observer = observer

def _effects_observer(self, update_type, effect, index):
kwargs = {
'index': index,
'origin': self
}

if update_type == UpdateType.CREATED \
or update_type == UpdateType.UPDATED:
effect.patch = self
effect.observer = self.observer

self.observer.on_effect_updated(effect, update_type)

if update_type == UpdateType.DELETED:
elif update_type == UpdateType.DELETED:
for connection in effect.connections:
self.connections.remove(connection)

effect.patch = None
effect.observer = MagicMock()

self.observer.on_effect_updated(effect, update_type, **kwargs)

def _connections_observer(self, update_type, connection, index):
self.observer.on_connection_updated(connection, update_type)

Expand Down
12 changes: 9 additions & 3 deletions pluginsmanager/model/updates_observer.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,35 +34,41 @@ def on_current_patch_change(self, patch, token=None):
pass

@abstractmethod
def on_bank_updated(self, bank, update_type, token=None):
def on_bank_updated(self, bank, update_type, token=None, **kwargs):
"""
Called when changes occurs in any :class:`Bank`
:param Bank bank: Bank changed.
:param UpdateType update_type: Change type
:param string token: Request token identifier
:param int index: Bank index (or old index if update_type == UpdateType.DELETED)
:param BanksManager origin: BanksManager that the bank is (or has) contained
"""
pass

@abstractmethod
def on_patch_updated(self, patch, update_type, token=None):
def on_patch_updated(self, patch, update_type, token=None, **kwargs):
"""
Called when changes occurs in any :class:`Patch`
:param Patch patch: Patch changed
:param UpdateType update_type: Change type
:param string token: Request token identifier
:param int index: Patch index (or old index if update_type == UpdateType.DELETED)
:param Bank origin: Bank that the patch is (or has) contained
"""
pass

@abstractmethod
def on_effect_updated(self, effect, update_type, token=None):
def on_effect_updated(self, effect, update_type, token=None, **kwargs):
"""
Called when changes occurs in any :class:`Effect`
:param Effect effect: Effect changed
:param UpdateType update_type: Change type
:param string token: Request token identifier
:param int index: Effect index (or old index if update_type == UpdateType.DELETED)
:param Patch origin: Patch that the effect is (or has) contained
"""
pass

Expand Down
10 changes: 5 additions & 5 deletions test/banks_manager_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ def test_observers(self):

bank = Bank('Bank 1')
manager.append(bank)
observer.on_bank_updated.assert_called_with(bank, UpdateType.CREATED, None)
observer.on_bank_updated.assert_called_with(bank, UpdateType.CREATED, None, index=0, origin=manager)

patch = Patch('Rocksmith')
bank.append(patch)
observer.on_patch_updated.assert_called_with(patch, UpdateType.CREATED, None)
observer.on_patch_updated.assert_called_with(patch, UpdateType.CREATED, None, index=0, origin=bank)

builder = Lv2EffectBuilder()
reverb = builder.build('http://calf.sourceforge.net/plugins/Reverb')
Expand Down Expand Up @@ -71,11 +71,11 @@ def test_observers(self):
observer.on_param_value_changed.assert_called_with(fuzz.params[0], None)

del bank.patches[0]
observer.on_patch_updated.assert_called_with(patch, UpdateType.DELETED, None)
observer.on_patch_updated.assert_called_with(patch, UpdateType.DELETED, None, index=0, origin=bank)

bank2 = Bank('Bank 2')
manager.banks[0] = bank2
observer.on_bank_updated.assert_called_with(bank2, UpdateType.UPDATED, None)
observer.on_bank_updated.assert_called_with(bank2, UpdateType.UPDATED, None, index=0, origin=manager)

manager.banks.remove(bank2)
observer.on_bank_updated.assert_called_with(bank2, UpdateType.DELETED, None)
observer.on_bank_updated.assert_called_with(bank2, UpdateType.DELETED, None, index=0, origin=manager)
2 changes: 1 addition & 1 deletion test/mod_host/mod_host_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from pluginsmanager.model.system.system_effect import SystemEffect


class PersistenceTest(unittest.TestCase):
class ModHostTest(unittest.TestCase):
builder = None

@classmethod
Expand Down
14 changes: 6 additions & 8 deletions test/model/bank_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ def test_add_patch_by_patches(self):
bank.patches.append(patch1)
self.assertEqual(patch1.bank, bank)
self.assertEqual(bank.patches[0], patch1)
bank.observer.on_patch_updated.assert_called_with(patch1, UpdateType.CREATED)
bank.observer.on_patch_updated.assert_called_with(patch1, UpdateType.CREATED, index=0, origin=bank)

bank.patches.append(patch2)
self.assertEqual(patch2.bank, bank)
self.assertEqual(bank.patches[1], patch2)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.CREATED)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.CREATED, index=1, origin=bank)

def test_add_patch(self):
bank = Bank('Bank 1')
Expand All @@ -41,12 +41,12 @@ def test_add_patch(self):
bank.append(patch1)
self.assertEqual(patch1.bank, bank)
self.assertEqual(bank.patches[0], patch1)
bank.observer.on_patch_updated.assert_called_with(patch1, UpdateType.CREATED)
bank.observer.on_patch_updated.assert_called_with(patch1, UpdateType.CREATED, index=0, origin=bank)

bank.append(patch2)
self.assertEqual(patch2.bank, bank)
self.assertEqual(bank.patches[1], patch2)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.CREATED)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.CREATED, index=1, origin=bank)

def test_update_patch(self):
bank = Bank('Bank 1')
Expand All @@ -61,7 +61,7 @@ def test_update_patch(self):

self.assertEqual(patch2.bank, bank)
self.assertEqual(bank.patches[0], patch2)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.UPDATED)
bank.observer.on_patch_updated.assert_called_with(patch2, UpdateType.UPDATED, index=0, origin=bank)

def test_delete_patch(self):
bank = Bank('Bank 1')
Expand All @@ -75,11 +75,9 @@ def test_delete_patch(self):

self.assertEqual(patch.bank, None)
self.assertEqual(len(bank.patches), 0)
bank.observer.on_patch_updated.assert_called_with(patch, UpdateType.DELETED)
bank.observer.on_patch_updated.assert_called_with(patch, UpdateType.DELETED, index=0, origin=bank)

def test_json(self):


bank = Bank('Bank 1')
patch = Patch('Rocksmith')

Expand Down
21 changes: 14 additions & 7 deletions test/model/patch_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ def test_add_effect_by_effects(self):
patch.effects.append(effect1)
self.assertEqual(effect1.patch, patch)
self.assertEqual(patch.effects[0], effect1)
patch.observer.on_effect_updated.assert_called_with(effect1, UpdateType.CREATED)
patch.observer.on_effect_updated.assert_called_with(effect1, UpdateType.CREATED, index=0, origin=patch)

patch.effects.append(effect2)
self.assertEqual(effect2.patch, patch)
self.assertEqual(patch.effects[1], effect2)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.CREATED)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.CREATED, index=1, origin=patch)

def test_add_effect(self):
patch = Patch('Patch 1')
Expand All @@ -38,12 +38,12 @@ def test_add_effect(self):
patch.append(effect1)
self.assertEqual(effect1.patch, patch)
self.assertEqual(patch.effects[0], effect1)
patch.observer.on_effect_updated.assert_called_with(effect1, UpdateType.CREATED)
patch.observer.on_effect_updated.assert_called_with(effect1, UpdateType.CREATED, index=0, origin=patch)

patch.append(effect2)
self.assertEqual(effect2.patch, patch)
self.assertEqual(patch.effects[1], effect2)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.CREATED)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.CREATED, index=1, origin=patch)

def test_update_effect(self):
patch = Patch('Patch 1')
Expand All @@ -58,21 +58,28 @@ def test_update_effect(self):

self.assertEqual(effect2.patch, patch)
self.assertEqual(patch.effects[0], effect2)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.UPDATED)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.UPDATED, index=0, origin=patch)

def test_delete_effect(self):
patch = Patch('Bank 1')

effect = MagicMock()
effect2 = MagicMock()

patch.append(effect)
patch.append(effect2)

patch.observer = MagicMock()
del patch.effects[0]
del patch.effects[1]

self.assertEqual(effect2.patch, None)
self.assertEqual(len(patch.effects), 1)
patch.observer.on_effect_updated.assert_called_with(effect2, UpdateType.DELETED, index=1, origin=patch)

del patch.effects[0]
self.assertEqual(effect.patch, None)
self.assertEqual(len(patch.effects), 0)
patch.observer.on_effect_updated.assert_called_with(effect, UpdateType.DELETED)
patch.observer.on_effect_updated.assert_called_with(effect, UpdateType.DELETED, index=0, origin=patch)

def test_add_connection_by_connections(self):
""" Other mode is by output.connect(input)"""
Expand Down

0 comments on commit 0f33a04

Please sign in to comment.