Exemple #1
0
    def test_addview_adds_plugin(self):
        context = self.mocker.mock()
        adding = self.providing_stub(IAdding)
        request = self.stub_request(stub_response=False)

        self.expect(request.form).result({
            'form.button.Add': 'Add',
            'id': 'the-bridge',
            'title': 'The Bridge'
        })

        self.expect(adding.context).result(context)
        context['the-bridge'] = MATCH(
            lambda obj: isinstance(obj, BridgePlugin))

        self.expect(adding.absolute_url()).result('http://nohost/acl_users')
        self.expect(request.response.redirect(
                'http://nohost/acl_users/manage_workspace?' + \
                    'manage_tabs_message=Plugin+added.'))

        self.replay()

        addview = queryMultiAdapter((adding, request),
                                    name='add-bridge-plugin')
        addview()
Exemple #2
0
def test_closeAllDocumentsWithDelegate_didCloseAllSelector_contextInfo_():
    import editxt.util as util
    context = 42
    dc = ak.NSDocumentController.sharedDocumentController()
    m = Mocker()
    app = m.replace(editxt, 'app')

    def perf_sel(delegate, selector, *args):
        should_term(*args)

    dsd_class = m.replace(mod, 'DocumentSavingDelegate', spec=False)
    docs = m.mock()
    app.iter_dirty_documents() >> docs
    selector = "_docController:shouldTerminate:context:"
    delegate = m.mock()

    def test_callback(callback):
        callback("<result>")
        return True

    should_term = delegate._docController_shouldTerminate_context_
    should_term(dc, "<result>", context)
    saver = m.mock(DocumentSavingDelegate)
    dsd_class.alloc() >> saver
    saver.init_callback_(docs, MATCH(test_callback)) >> saver
    saver.save_next_document()
    with replattr(mod, 'perform_selector', perf_sel), m:
        dc.closeAllDocumentsWithDelegate_didCloseAllSelector_contextInfo_(
            delegate, selector, context)
Exemple #3
0
    def test(c):
        proj = Project.create()
        m = Mocker()
        dsd_class = m.replace(xtapp, 'DocumentSavingDelegate')
        app = m.replace(mod, 'app')
        ed = m.mock(Editor)
        app.find_editors_with_project(proj) >> [ed for x in range(c.num_eds)]
        if c.num_eds == 1:
            docs = [m.mock(TextDocumentView)]
            doc = docs[0].document >> m.mock(TextDocument)
            app.iter_editors_with_view_of_document(doc) >> \
                (ed for x in range(c.num_doc_views))
            dirty_documents = m.method(proj.dirty_documents)
            dirty_documents() >> docs

            def check_docs(_docs):
                d = docs if c.num_doc_views == 1 else []
                eq_(list(_docs), d + [proj])
                return True

            callback = []

            def get_callback(func):
                callback.append(func)
                return True

            def do_callback():
                callback[0](c.should_close)

            saver = m.mock(xtapp.DocumentSavingDelegate)
            dsd_class.alloc() >> saver
            saver.init_callback_(MATCH(check_docs),
                                 MATCH(get_callback)) >> saver
            expect(saver.save_next_document()).call(do_callback)
            if c.should_close:
                ed.discard_and_focus_recent(proj)
        else:
            ed.discard_and_focus_recent(proj)
        with m:
            proj.perform_close(ed)
Exemple #4
0
def _setup_subprocess(mocker):
    """Patch subprocess.Popen with a Mock object.

    In dry-run mode, don't run any commands - just
    fake it.
    """
    popen = mocker.replace("subprocess.Popen")
    pid = popen(MATCH(match_mysqldump), KWARGS)
    mocker.count(min=0, max=None)
    mocker.passthrough()

    pid = popen(ARGS, KWARGS)
    mocker.count(min=0, max=None)
    mocker.call(PopenMock)
Exemple #5
0
def _setup_fileio(mocker):
    """Patch __builtin__.open.

    Allow read access normally, but all writes go
    through the storage mock layer.
    """
    def is_writemode(param):
        """Check whether a open() mode will allow a write operation"""
        return 'a' in param or 'w' in param

    # this doesn't handle r+ properly, but we don't use it in mysqldump
    _open = mocker.replace('__builtin__.open')
    fileobj = _open(ANY, MATCH(is_writemode), ANY)
    mocker.count(min=0, max=None)
    mocker.call(storage.open)

    fileobj = _open(ANY, MATCH(is_writemode))
    mocker.count(min=0, max=None)
    mocker.call(storage.open)

    _mkdir = mocker.replace('os.mkdir')
    _mkdir(ARGS)
    mocker.count(min=0, max=None)
Exemple #6
0
def test_SheetController_begin_sheet():
    from editxt.controls.alert import Caller
    m = Mocker()
    tv = m.mock(TextView)
    slc = SheetController(tv)

    def cb(callback):
        return callback.__name__ == "sheet_did_end" and callback.__self__ is slc

    clr_class = m.replace(mod, "Caller")
    clr = clr_class.alloc().init(MATCH(cb)) >> m.mock(Caller)
    win = tv.window() >> m.mock(ak.NSWindow)
    pnl = m.method(slc.gui.window)() >> m.mock(ak.NSPanel)
    nsapp = m.replace(ak, 'NSApp', spec=False)
    nsapp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_(
        pnl, win, clr, "alertDidEnd:returnCode:contextInfo:", 0)
    with m:
        slc.begin_sheet(None)
    def setUp(self):
        mocker = self.mocker

        A = mocker.mock()
        A.__eq__(MATCH(lambda x: x is A))
        mocker.result(True)
        mocker.count(0, None)
        A.__eq__(MATCH(lambda x: x is not A))
        mocker.result(False)
        mocker.count(0, None)
        A.overlaps(ANY)
        mocker.result(False)
        mocker.count(0, None)
        A.begins
        mocker.result(5)
        mocker.count(0, None)

        B = mocker.mock()
        A.__eq__(MATCH(lambda x: x is B))
        mocker.result(True)
        mocker.count(0, None)
        B.__eq__(MATCH(lambda x: x is not B))
        mocker.result(False)
        mocker.count(0, None)
        B.overlaps(ANY)
        mocker.result(False)
        mocker.count(0, None)
        B.begins
        mocker.result(3)
        mocker.count(0, None)

        C = mocker.mock()
        C.__eq__(MATCH(lambda x: x is C))
        mocker.result(True)
        mocker.count(0, None)
        C.__eq__(MATCH(lambda x: x is not C))
        mocker.result(False)
        mocker.count(0, None)
        C.overlaps(ANY)
        mocker.result(False)
        mocker.count(0, None)
        C.begins
        mocker.result(7)
        mocker.count(0, None)

        self.A = A
        self.B = B
        self.C = C

        mocker.replay()
Exemple #8
0
 def test_create_user(self):
     o = self.mocker.patch(oauthtwitter)
     request = self.mocker.mock()
     # User already logged in
     request.user.is_anonymous()
     self.mocker.result(False)
     o._login_and_redirect(request=request, user=None)
     self.mocker.result('Logged in')
     # Anonymous user with new User
     request.user.is_anonymous()
     self.mocker.result(True)
     request.twitter_access_token
     self.mocker.result(TOKEN)
     unknown = self.mocker.mock()
     unknown.id
     self.mocker.result(2)
     unknown.screen_name
     self.mocker.result("unknown")
     unknown.AsJsonString()
     self.mocker.result('{}')
     request.twitter_userinfo
     self.mocker.result(unknown)
     o._login_and_redirect(request=request,
                           user=MATCH(lambda x: isinstance(x, User)))
     self.mocker.result('New user')
     # Anonymous user with existing User
     request.user.is_anonymous()
     self.mocker.result(True)
     request.twitter_access_token
     self.mocker.result(TOKEN)
     twitter = self.mocker.mock()
     twitter.screen_name
     self.mocker.result("twitter")
     request.twitter_userinfo
     self.mocker.result(twitter)
     with self.mocker:
         response = o._create_user(request)
         self.assertEqual(response, 'Logged in')
         response = o._create_user(request)
         self.assertEqual(response, 'New user')
         response = o._create_user(request)
         self.assertEqual(response['Location'], '/twitter/register/')
Exemple #9
0
def test_register_value_transformers():
    import editxt.valuetrans as mod
    from editxt.valuetrans import register_value_transformers
    m = Mocker()
    vt = m.replace(fn, 'NSValueTransformer')
    trans = [
        mod.WrapModeTransformer,
        mod.IndentModeTransformer,
        mod.NewlineModeTransformer,
        mod.IntTransformer,
        mod.CharacterEncodingTransformer,
        mod.SyntaxDefTransformer,
    ]

    def make_is_trans(t):
        def is_trans(arg):
            return isinstance(arg, t)

        return is_trans

    for t in trans:
        vt.setValueTransformer_forName_(MATCH(make_is_trans(t)), t.__name__)
    with m:
        register_value_transformers()
Exemple #10
0
def arg_of_type(clazz):
    return MATCH(lambda arg: type(arg) == clazz)