def test_should_process_files_for_create(self, pypandocMock, blogObjClass): mo = mock_open(read_data=""" +++ title= "t" tags= ["l", "a", "c"] +++ this is the post """) def processItemSideEffect(*positionalArgs, **kwargs): args = positionalArgs[0] assert args.title == "t" assert args.labels == ["l", "a", "c"] assert args.command == "post" assert args.format == "asciidoc" assert not args.publish return DEFAULT blogObj = blogObjClass.return_value with patch('blogger.main.open', mo) as openmock, \ patch('blogger.main.processItem') as mockProcessItem, \ patch('blogger.main.glob') as glob: glob.iglob.return_value = iter(["file1.asciidoc"]) pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['file', "file1.asciidoc"]) mockProcessItem.side_effect = processItemSideEffect exitStatus = runner(args)
def test_should_invoke_get_by_url(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-u", "https://some/url"]) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = MainTests.posts runner(args) blogObj.getPosts.assert_called_with(url="https://some/url")
def test_empty_results_in_get(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-q", "query"]) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = {"items": []} runner(args) blogObj.getPosts.assert_called_with(query="query", maxResults=None)
def test_should_invoke_search(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-q", "query"]) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = MainTests.posts runner(args) blogObj.getPosts.assert_called_with(query="query", maxResults=None)
def test_handle_non_existent_keys_in_fields(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-q", "query", "-f", "id,b"]) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = MainTests.posts runner(args) blogObj.getPosts.assert_called_with(query="query", maxResults=None)
def test_should_invoke_bylabel_bydefault(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get']) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = MainTests.posts runner(args) blogObj.getPosts.assert_called_with(labels=None, maxResults=None)
def test_should_return_error_exit_code_on_exception( self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-p", "100"]) blogObj = blogObjClass.return_value blogObj.getPosts.side_effect = AccessTokenRefreshError rval = runner(args) assert rval == -1
def test_should_invoke_getbyid(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['get', "-p", "100"]) blogObj = blogObjClass.return_value blogObj.getPosts.return_value = MainTests.posts runner(args) blogObj.getPosts.assert_called_with(postId="100")
def test_should_invoke_delete(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['delete', '100', "200"]) blogObj = blogObjClass.return_value runner(args) assert blogObj.deletePost.call_count == 2 expected = [call.deletePost('100'), call.deletePost('200')] assert blogObj.mock_calls == expected
def test_should_invoke_update(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args( ['update', "-t", "t", "-c", "content", "100", '--date', '2018-01-01']) blogObj = blogObjClass.return_value blogObj.updatePost.return_value = {"id": "100", "url": "someurl"} runner(args) blogObj.updatePost.assert_called_with( "100", "t", "content", None, [], isDraft=True, fmt="html", publishDate='2018-01-01')
def test_should_invoke_post(self, pypandocMock, blogObjClass): pypandocMock.get_pandoc_formats.return_value = [['a'], ['b']] args = parse_args(['post', "-t", "t", "-c", "content"]) print(args) blogObj = blogObjClass.return_value blogObj.post.return_value = {"id": "100", "url": "someurl"} exitStatus = runner(args) blogObj.post.assert_called_with("t", "content", None, [], isDraft=True, fmt="html") assert exitStatus == 0