def test_sdr_feeding(self, name, mod=None, side_effect=None, err_type=None, err_msg=None):

        sdr = deepcopy(BASIC_SDR)

        if mod is not None:
            mod(self, sdr)

        if side_effect is not None:
            side_effect(self)

        sdr_mng = sdr_manager.SDRManager()

        error = None
        try:
            sdr_mng.validate_sdr(sdr)
        except Exception as e:
            error = e

        if err_type is None:
            self.assertTrue(error is None)
            sdr_manager.Organization.objects.filter.assert_called_once_with(name='test_user')

            sdr_manager.Order.objects.get.assert_called_once_with(order_id='1')
            self._order.get_product_contract.assert_called_once_with('2')

            self.assertEquals(self._contract, sdr_mng._contract)
            self.assertEquals(self._order, sdr_mng._order)
            self.assertEquals(self._timestamp, sdr_mng._time_stamp)

            sdr_manager.User.objects.get.assert_called_once_with(username='******')
        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(e), err_msg)
    def test_update_usage(self):
        sdr_mng = sdr_manager.SDRManager()
        sdr_mng._contract = self._contract
        sdr_mng._order = self._order
        sdr_mng._time_stamp = self._timestamp

        sdr_mng.update_usage()

        self.assertEquals(2, self._contract.correlation_number)
        self.assertEquals(self._timestamp, self._contract.last_usage)

        self._order.save.assert_called_once_with()