def setup_injections(self): inj = injections.Container() inj["loop"] = self.loop inj["executor"] = self.executor inj["elastic"] = self.elastic inj["twilio_gateway"] = self.twilio_gateway inj.interconnect_all() return inj
def test_interconnect(self): @di.has class Source: value = di.depends(self.Consumer, 'consumer') def __injected__(self): assert self.value.value is 'John' c = di.Container() c['name'] = "John" c['consumer'] = self.Consumer() c.interconnect_all() res = c.inject(Source()) self.assertEqual(res.value.hello(), 'Hello John!')
def test_missing_dependency(self): c = di.Container() c['a'] = 1 @di.has class Consumer: a = di.depends(int) b = di.depends(int) if hasattr(self, 'assertRaisesRegex'): checker = self.assertRaisesRegex else: checker = self.assertRaisesRegexp with checker(di.MissingDependencyError, "Dependency 'b' is missed in container"): c.inject(Consumer())
def test_clone(self): @di.has class User: value = di.depends(self.Consumer, 'consumer') @di.has class Girl: father = di.depends(User, 'user') c = di.Container() c['name'] = "John" c['consumer'] = self.Consumer() c.interconnect_all() c = c.clone() c['user'] = User() c.interconnect_all() r = c.inject(Girl()) self.assertTrue(r.father is c['user']) self.assertTrue(r.father.value is c['consumer'])
def test_larger_cycle(self): @di.has class Y(object): pass @di.has class A(object): b = di.depends(object, 'b') y = di.depends(Y, 'y') @di.has class B(object): c = di.depends(object, 'c') @di.has class C(object): a = di.depends(object, 'a') @di.has class X(object): a = di.depends(object, 'a') @di.has class Z(object): x = di.depends(object, 'x') c = di.Container() c['a'] = A() c['b'] = B() c['c'] = C() c['x'] = X() c['y'] = Y() c['z'] = Z() try: c.interconnect_all() except RuntimeError as e: self.assertSetEqual({'a', 'b', 'c'}, set(e.objects_in_cycle.keys())) else: raise AssertionError("Exception not raised")
def test_cyclic(self): class Base: pass @di.has class Processor(Base): cache = di.depends(Base, 'cache') @di.has class Cache(Base): processor = di.depends(Base, 'processor') c = di.Container() c['cache'] = Cache() c['processor'] = Processor() try: c.interconnect_all() except RuntimeError as e: self.assertSetEqual({'cache', 'processor'}, set(e.objects_in_cycle.keys())) else: raise AssertionError("Exception not raised")
def test_ok(self): c = di.Container() c['name'] = "John" cons = c.inject(self.Consumer()) self.assertEqual(cons.hello(), 'Hello John!')
def test_wrong_type(self): c = di.Container() c['name'] = 1 with self.assertRaises(TypeError): c.inject(self.Consumer())
from .views import (ChatInitialView, InitializeLiveSession, CourseletPreviewView, CheckChatInitialView) from .api import ( MessagesView, HistoryView, ProgressView, ResourcesView, InitNewChat, UpdatesView, UpdatesThreadIdView, AddUnitByChatProgressView, ) from .services import FsmHandler inj = injections.Container() inj['next_handler'] = FsmHandler() MessagesViewFSM = inj.inject(MessagesView) ChatInitialViewFSM = inj.inject(ChatInitialView) router = SimpleRouter() router.register(r'messages', MessagesViewFSM, basename='messages') router.register(r'resources', ResourcesView, basename='resources') app_name = 'chat' urlpatterns = [ url(r'^ui/$', TemplateView.as_view(template_name="cui/index.html")), url(r'^enrollcode/(?P<enroll_key>[a-zA-Z0-9]+)/(?P<chat_id>0)/?$', InitNewChat.as_view(), name='init_chat_api'),
def setUp(self): inj = injections.Container() inj['next_handler'] = TestHandler() self.MessageSerializerForTest = inj.inject(MessageSerializer) super(MesasageSerializerTests, self).setUp()
from .models import Message, Chat, ChatDivider, EnrollUnitCode from .views import ChatInitialView from .serializers import ( MessageSerializer, ChatHistorySerializer, ChatProgressSerializer, ChatResourcesSerializer, AddUnitByChatSerializer, ChatSerializer, ) from .utils import ( get_updated_thread_id, update_activity, ) inj_alternative = injections.Container() inj_alternative['next_handler'] = FsmHandler() MessageSerializer = inj_alternative.inject(MessageSerializer) def get_additional_messages(response, chat, selected: list) -> None: """ Emit resolutions based on user selection. """ student_errors = response.studenterror_set.filter( errorModel__id__in=selected) dummy_ul = UnitLesson.objects.filter( lesson__title='Hope you\'ve overcame the misconception').first() for each in student_errors: if not each.errorModel.get_em_resolutions()[1]: Message.objects.get_or_create(