예제 #1
0
class StateStreamTestCase(unittest.TestCase):
    object = None  # should be set in subclass setUp

    def setUpForObject(self, obj):
        # pylint: disable=attribute-defined-outside-init
        self.object = obj
        self.updates = []
        self.st = SubscriptionTester()

        def send(value):
            self.updates.extend(json.loads(value))

        self.stream = StateStreamInner(send,
                                       self.object,
                                       'urlroot',
                                       subscription_context=self.st.context)

    def getUpdates(self):
        # pylint: disable=attribute-defined-outside-init

        self.st.advance()
        self.stream._flush()  # warning: implementation poking
        u = self.updates
        self.updates = []
        return u
예제 #2
0
class StateStreamTestCase(unittest.TestCase):
    object = None  # should be set in subclass setUp

    def setUpForObject(self, obj):
        # pylint: disable=attribute-defined-outside-init
        self.object = obj
        self.updates = []
        self.st = SubscriptionTester()

        def send(value):
            if isinstance(value, unicode):
                self.updates.extend(json.loads(value))
            elif isinstance(value, bytes):
                self.updates.append(['actually_binary', value])

        self.stream = StateStreamInner(send,
                                       self.object,
                                       'urlroot',
                                       subscription_context=self.st.context)

    def getUpdates(self):
        # pylint: disable=attribute-defined-outside-init

        self.st.advance()
        u = self.updates
        self.updates = []
        return u
예제 #3
0
class StateStreamTestCase(unittest.TestCase):
    object = None  # should be set in subclass setUp
    
    def setUpForObject(self, obj):
        # pylint: disable=attribute-defined-outside-init
        self.object = obj
        self.updates = []
        self.st = SubscriptionTester()
        
        def send(value):
            self.updates.extend(json.loads(value))
        
        self.stream = StateStreamInner(
            send,
            self.object,
            'urlroot',
            subscription_context=self.st.context)
    
    def getUpdates(self):
        # pylint: disable=attribute-defined-outside-init
        
        self.st.advance()
        self.stream._flush()  # warning: implementation poking
        u = self.updates
        self.updates = []
        return u
예제 #4
0
    def setUpForObject(self, obj):
        # pylint: disable=attribute-defined-outside-init
        self.object = obj
        self.updates = []
        self.st = SubscriptionTester()

        def send(value):
            self.updates.extend(json.loads(value))

        self.stream = StateStreamInner(send,
                                       self.object,
                                       'urlroot',
                                       subscription_context=self.st.context)
예제 #5
0
    def setUpForObject(self, obj):
        # pylint: disable=attribute-defined-outside-init
        self.object = obj
        self.updates = []
        self.st = SubscriptionTester()

        def send(value):
            if isinstance(value, unicode):
                self.updates.extend(json.loads(value))
            elif isinstance(value, bytes):
                self.updates.append(['actually_binary', value])

        self.stream = StateStreamInner(send,
                                       self.object,
                                       'urlroot',
                                       subscription_context=self.st.context)
예제 #6
0
 def setUpForObject(self, obj):
     # pylint: disable=attribute-defined-outside-init
     self.object = obj
     self.updates = []
     self.st = SubscriptionTester()
     
     def send(value):
         self.updates.extend(json.loads(value))
     
     self.stream = StateStreamInner(
         send,
         self.object,
         'urlroot',
         subscription_context=self.st.context)
예제 #7
0
class TestPersistenceChangeDetector(unittest.TestCase):
    def setUp(self):
        self.st = SubscriptionTester()
        self.o = ValueAndBlockSpecimen(ValueAndBlockSpecimen(ExportedState()))
        self.calls = 0
        self.d = PersistenceChangeDetector(
            self.o, self.__callback, subscription_context=self.st.context)

    def __callback(self):
        self.calls += 1

    def test_1(self):
        self.assertEqual(self.d.get(), {
            'value': 'initial',
            'block': {
                'value': 'initial',
                'block': {},
            },
        })
        self.assertEqual(0, self.calls)
        self.o.set_value('one')
        self.assertEqual(0, self.calls)
        self.st.advance()
        self.assertEqual(1, self.calls)
        self.o.set_value('two')
        self.st.advance()
        self.assertEqual(1, self.calls)  # only fires once
        self.assertEqual(self.d.get(), {
            u'value': 'two',
            u'block': {
                u'value': 'initial',
                u'block': {},
            },
        })
        self.st.advance()
        self.assertEqual(1, self.calls)
        self.o.get_block().set_value('three')  # pylint: disable=no-member
        self.st.advance()
        self.assertEqual(2, self.calls)
        self.assertEqual(self.d.get(), {
            u'value': 'two',
            u'block': {
                u'value': 'three',
                u'block': {},
            },
        })
예제 #8
0
class TestPersistenceChangeDetector(unittest.TestCase):
    def setUp(self):
        self.st = SubscriptionTester()
        self.o = ValueAndBlockSpecimen(ValueAndBlockSpecimen(ExportedState()))
        self.calls = 0
        self.d = PersistenceChangeDetector(self.o, self.__callback, subscription_context=self.st.context)
    
    def __callback(self):
        self.calls += 1
    
    def test_1(self):
        self.assertEqual(self.d.get(), {
            'value': 'initial',
            'block': {
                'value': 'initial',
                'block': {},
            },
        })
        self.assertEqual(0, self.calls)
        self.o.set_value('one')
        self.assertEqual(0, self.calls)
        self.st.advance()
        self.assertEqual(1, self.calls)
        self.o.set_value('two')
        self.st.advance()
        self.assertEqual(1, self.calls)  # only fires once
        self.assertEqual(self.d.get(), {
            u'value': 'two',
            u'block': {
                u'value': 'initial',
                u'block': {},
            },
        })
        self.st.advance()
        self.assertEqual(1, self.calls)
        self.o.get_block().set_value('three')  # pylint: disable=no-member
        self.st.advance()
        self.assertEqual(2, self.calls)
        self.assertEqual(self.d.get(), {
            u'value': 'two',
            u'block': {
                u'value': 'three',
                u'block': {},
            },
        })
예제 #9
0
 def setUp(self):
     self.st = SubscriptionTester()
     self.o = ValueAndBlockSpecimen(ValueAndBlockSpecimen(ExportedState()))
     self.calls = 0
     self.d = PersistenceChangeDetector(self.o, self.__callback, subscription_context=self.st.context)
예제 #10
0
 def setUp(self):
     self.st = SubscriptionTester()
     self.o = ValueAndBlockSpecimen(ValueAndBlockSpecimen(ExportedState()))
     self.calls = 0
     self.d = PersistenceChangeDetector(self.o, self.__callback, subscription_context=self.st.context)