def test_add_multiple_documents_to_corpus(self, mocked_post): example_document_2 = self.example_document.copy() example_document_2['url'] = "http://pypln.example.com/documents/2/" mock1, mock2 = Mock(), Mock() mock1.status_code = mock2.status_code = 201 mock1.json.return_value = self.example_document mock2.json.return_value = example_document_2 mocked_post.side_effect = [mock1, mock2] corpus = Corpus(session=self.session, **self.example_json) result = corpus.add_documents(["content_1", "content_2"]) documents, errors = result self.assertEqual(errors, []) self.assertIs(type(documents[0]), Document) self.assertIs(type(documents[1]), Document) for key, value in self.example_document.items(): if key == 'properties': key = 'properties_url' self.assertEqual(value, getattr(documents[0], key)) for key, value in example_document_2.items(): if key == 'properties': key = 'properties_url' self.assertEqual(value, getattr(documents[1], key))
def test_adding_multiple_documents_returns_an_error(self, mocked_add_document): results = [self.example_document, RuntimeError] mocked_add_document.side_effect = results corpus = Corpus(session=self.session, **self.example_json) result = corpus.add_documents(["content_1", "content_2"]) expected_calls = [call("content_1"), call("content_2")] mocked_add_document.assert_has_calls(expected_calls) expected = ([self.example_document], [("content_2", RuntimeError())]) # How should we test this? The second element of the 'errors' tuple is # a different instance of RuntimeError, so it doesn't evaluate as equal # to the one raise in the mock. For now I'll just check everything # separatedly. self.assertEqual(result[0], expected[0]) self.assertEqual(result[1][0][0], expected[1][0][0]) self.assertIsInstance(expected[1][0][1], RuntimeError)
def test_adding_multiple_documents_returns_an_error( self, mocked_add_document): results = [self.example_document, RuntimeError] mocked_add_document.side_effect = results corpus = Corpus(session=self.session, **self.example_json) result = corpus.add_documents(["content_1", "content_2"]) expected_calls = [call("content_1"), call("content_2")] mocked_add_document.assert_has_calls(expected_calls) expected = ([self.example_document], [("content_2", RuntimeError())]) # How should we test this? The second element of the 'errors' tuple is # a different instance of RuntimeError, so it doesn't evaluate as equal # to the one raise in the mock. For now I'll just check everything # separatedly. self.assertEqual(result[0], expected[0]) self.assertEqual(result[1][0][0], expected[1][0][0]) self.assertIsInstance(expected[1][0][1], RuntimeError)