Exemplo n.º 1
0
    def test_bulk_api_query(self):  # FIXME: test wait
        sf = Mock()
        sf.bulk_url = "https://salesforce.com"

        conn = Connection(sf)
        conn._bulk = Mock()

        retval = [{"Id": "001000000000001"}, {"Id": "001000000000002"}]
        conn._bulk.is_batch_done = Mock(side_effect=[False, True])
        conn._bulk.create_query_job = Mock(return_value="075000000000000AAA")
        conn._bulk.get_all_results_for_query_batch = Mock(
            return_value=[IteratorBytesIO([json.dumps(retval).encode("utf-8")])]
        )

        results = list(conn.bulk_api_query("Account", "SELECT Id FROM Account", [], 5))
        conn._bulk.query.assert_called_once_with(
            "075000000000000AAA", "SELECT Id FROM Account"
        )
        self.assertEqual(
            conn._bulk.is_batch_done.call_args_list,
            [call(conn._bulk.query.return_value), call(conn._bulk.query.return_value)],
        )
        conn._bulk.get_all_results_for_query_batch.assert_called_once_with(
            conn._bulk.query.return_value
        )

        self.assertEqual(retval, results)
Exemplo n.º 2
0
    def test_bulk_query_converts_datetimes(self):
        sf = Mock()
        sf.bulk_url = "https://salesforce.com"

        conn = Connection(sf)
        conn._bulk = Mock()

        retval = [
            {"Id": "001000000000001", "CreatedDate": 1546659665000},
            {"Id": "001000000000002", "CreatedDate": None},
        ]
        conn._bulk.is_batch_done = Mock(side_effect=[False, True])
        conn._bulk.create_query_job = Mock(return_value="075000000000000AAA")
        conn._bulk.get_all_results_for_query_batch = Mock(
            return_value=[IteratorBytesIO([json.dumps(retval).encode("utf-8")])]
        )

        results = list(
            conn.bulk_api_query(
                "Account", "SELECT Id, CreatedDate, FROM Account", ["CreatedDate"], 5
            )
        )

        self.assertEqual(
            results[0],
            {"Id": "001000000000001", "CreatedDate": "2019-01-05T03:41:05.000+0000"},
        )
        self.assertEqual(results[1], {"Id": "001000000000002", "CreatedDate": None})
Exemplo n.º 3
0
    def test_bulk_api_update(self):
        sf = Mock()
        sf.bulk_url = "https://salesforce.com"

        conn = Connection(sf, "48.0")
        conn._bulk = Mock()
        conn._bulk_api_insert_update = Mock(return_value=[])

        self.assertEqual(
            [], list(conn.bulk_api_update("Account", [], 120, 5, 1, "Parallel"))
        )

        conn._bulk.create_update_job.assert_called_once_with(
            "Account", contentType="JSON", concurrency="Parallel"
        )

        conn._bulk_api_insert_update.assert_called_once()
        assert (
            conn._bulk_api_insert_update.call_args[0][0]
            == conn._bulk.create_update_job.return_value
        )
        assert conn._bulk_api_insert_update.call_args[0][1] == "Account"
        assert conn._bulk_api_insert_update.call_args[0][3] == 120
        assert conn._bulk_api_insert_update.call_args[0][4] == 5
        assert conn._bulk_api_insert_update.call_args[0][5] == 1
Exemplo n.º 4
0
    def test_bulk_api_insert_update(self):
        sf = Mock()
        sf.bulk_url = "https://salesforce.com"
        conn = Connection(sf)
        conn._bulk = Mock()
        job = Mock()

        retval = [
            [{"Id": "001000000000001"}, {"Id": "001000000000002"}],
            [{"Id": "001000000000003"}],
        ]

        conn._bulk.is_batch_done = Mock(side_effect=[False, True])
        conn._bulk.get_batch_results = Mock(side_effect=retval)

        input_data = [{"Name": "Test"}, {"Name": "Test2"}, {"Name": "Test3"}]
        results = list(
            conn._bulk_api_insert_update(job, "Account", input_data, 120, 5, 2)
        )

        self.assertEqual(2, conn._bulk.post_batch.call_count)
        self.assertEqual(
            conn._bulk.wait_for_batch.call_args_list,
            [
                call(
                    job,
                    conn._bulk.post_batch.return_value,
                    timeout=120,
                    sleep_interval=5,
                ),
                call(
                    job,
                    conn._bulk.post_batch.return_value,
                    timeout=120,
                    sleep_interval=5,
                ),
            ],
        )
        conn._bulk.close_job.assert_called_once_with(job)
        self.assertEqual(
            conn._bulk.get_batch_results.call_args_list,
            [
                call(conn._bulk.post_batch.return_value, job),
                call(conn._bulk.post_batch.return_value, job),
            ],
        )
        self.assertEqual(
            results,
            [
                {"Id": "001000000000001"},
                {"Id": "001000000000002"},
                {"Id": "001000000000003"},
            ],
        )