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()
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)
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)
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)
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)
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()
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/')
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()
def arg_of_type(clazz): return MATCH(lambda arg: type(arg) == clazz)