Esempio n. 1
0
    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
Esempio n. 2
0
    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!')
Esempio n. 3
0
    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())
Esempio n. 4
0
    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'])
Esempio n. 5
0
    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")
Esempio n. 6
0
    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")
Esempio n. 7
0
 def test_ok(self):
     c = di.Container()
     c['name'] = "John"
     cons = c.inject(self.Consumer())
     self.assertEqual(cons.hello(), 'Hello John!')
Esempio n. 8
0
 def test_wrong_type(self):
     c = di.Container()
     c['name'] = 1
     with self.assertRaises(TypeError):
         c.inject(self.Consumer())
Esempio n. 9
0
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'),
Esempio n. 10
0
 def setUp(self):
     inj = injections.Container()
     inj['next_handler'] = TestHandler()
     self.MessageSerializerForTest = inj.inject(MessageSerializer)
     super(MesasageSerializerTests, self).setUp()
Esempio n. 11
0
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(