Skip to content

Commit

Permalink
Fix BanksManager observer
Browse files Browse the repository at this point in the history
  • Loading branch information
SrMouraSilva committed Nov 19, 2016
1 parent 08c46ce commit e707250
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 15 deletions.
27 changes: 22 additions & 5 deletions pluginsmanager/banks_manager.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
from .model.updates_observer import UpdatesObserver
from pluginsmanager.model.updates_observer import UpdatesObserver
from pluginsmanager.model.update_type import UpdateType

from pluginsmanager.util.observable_list import ObservableList

from unittest.mock import MagicMock


class BanksManager(object):
Expand All @@ -7,7 +12,8 @@ class BanksManager(object):
"""

def __init__(self, banks=None):
self.banks = []
self.banks = ObservableList()
self.banks.observer = self._banks_observer

banks = [] if banks is None else banks
self.observer_manager = ObserverManager()
Expand All @@ -19,9 +25,20 @@ def register(self, observer):
self.observer_manager.append(observer)

def append(self, bank):
bank.observer = self.observer_manager
self.banks.append(bank)

def _banks_observer(self, update_type, bank, index):
if update_type == UpdateType.CREATED \
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:
bank.manager = None
bank.observer_manager = MagicMock()


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

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

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

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

Expand Down
5 changes: 4 additions & 1 deletion pluginsmanager/model/bank.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,14 @@ class Bank(object):
:param string name: Bank name
"""
def __init__(self, name):
self.index = -1
self.name = name
self.patches = ObservableList()
self.patches.observer = self._patches_observer

self.index = -1

self.manager = None

self._observer = MagicMock()

@property
Expand Down
2 changes: 1 addition & 1 deletion pluginsmanager/model/updates_observer.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def on_current_patch_change(self, patch, token=None):
pass

@abstractmethod
def on_bank_update(self, bank, update_type, token=None):
def on_bank_updated(self, bank, update_type, token=None):
"""
Called when changes occurs in any :class:`Bank`
Expand Down
18 changes: 14 additions & 4 deletions test/banks_manager_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@
class BanksManagerTest(unittest.TestCase):

def test_observers(self):
manager = BanksManager()
observer = MagicMock()

manager = BanksManager()
manager.register(observer)

bank = Bank('Bank 1')
manager.append(bank)

manager.register(observer)
observer.on_bank_updated.assert_called_with(bank, UpdateType.CREATED, None)

patch = Patch('Rocksmith')
bank.append(patch)

observer.on_patch_updated.assert_called_with(patch, UpdateType.CREATED, None)

builder = Lv2EffectBuilder()
Expand Down Expand Up @@ -69,3 +69,13 @@ def test_observers(self):

fuzz.params[0].value = fuzz.params[0].minimum / fuzz.params[0].maximum
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)

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

manager.banks.remove(bank2)
observer.on_bank_updated.assert_called_with(bank2, UpdateType.DELETED, None)
2 changes: 0 additions & 2 deletions test/util/persistence_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ def bank(self):
sys_effect = SystemEffect('system', ('capture_1', 'capture_2'), ('playback_1', 'playback_2'))

bank = Bank('Bank 1')
bank.index = 3

patch = Patch('Patch 1')

bank.append(patch)
Expand Down

0 comments on commit e707250

Please sign in to comment.