def test_auto_save_analysis_result(self):
        """Test auto saving analysis result."""
        exp_data = self._create_experiment_data()
        exp_data.auto_save = True
        aresult = AnalysisResult(
            value={},
            name="qiskit_test",
            device_components=self.device_components,
            experiment_id=exp_data.experiment_id,
        )

        with mock.patch.object(
                IBMExperimentService,
                "update_experiment",
                wraps=exp_data.service.update_experiment) as mocked_exp:
            with mock.patch.object(
                    IBMExperimentService,
                    "create_analysis_result",
                    wraps=exp_data.service.create_analysis_result,
            ) as mocked_res:
                exp_data.add_analysis_results(aresult)
                mocked_exp.assert_called_once()
                mocked_res.assert_called_once()
                mocked_exp.reset_mock()

            with mock.patch.object(
                    IBMExperimentService,
                    "delete_analysis_result",
                    wraps=exp_data.service.delete_analysis_result,
            ) as mocked_res, mock.patch("builtins.input", lambda _: "y"):
                exp_data.delete_analysis_result(aresult.result_id)
                mocked_res.assert_called_once()
                mocked_exp.assert_called_once()
    def test_save_all(self):
        """Test saving all."""
        exp_data = self._create_experiment_data()
        exp_data.tags = ["foo", "bar"]
        aresult = AnalysisResult(
            value={},
            name="qiskit_test",
            device_components=self.device_components,
            experiment_id=exp_data.experiment_id,
        )
        exp_data.add_analysis_results(aresult)
        hello_bytes = str.encode("hello world")
        exp_data.add_figures(hello_bytes, figure_names="hello.svg")
        exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertEqual(["foo", "bar"], rexp.tags)
        self.assertEqual(aresult.result_id, rexp.analysis_results(0).result_id)
        self.assertEqual(hello_bytes, rexp.figure(0))

        exp_data.delete_analysis_result(0)
        exp_data.delete_figure(0)
        with mock.patch("builtins.input", lambda _: "y"):
            exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertRaises(IBMExperimentEntryNotFound, rexp.figure, "hello.svg")
        self.assertRaises(DbExperimentEntryNotFound, rexp.analysis_results,
                          aresult.result_id)
 def _create_analysis_result(self):
     """Create a simple analysis result."""
     exp_data = self._create_experiment_data()
     aresult = AnalysisResult(value={},
                              name='qiskit_test',
                              device_components=self.device_components,
                              experiment_id=exp_data.experiment_id)
     exp_data.add_analysis_results(aresult)
     exp_data.save()
     return aresult, exp_data
 def _create_analysis_result(self):
     """Create a simple analysis result."""
     exp_data = self._create_experiment_data()
     aresult = AnalysisResult(
         value={},
         name="qiskit_test",
         device_components=self.device_components,
         experiment_id=exp_data.experiment_id,
     )
     exp_data.add_analysis_results(aresult)
     exp_data.save()
     self.results_to_delete.append(aresult.result_id)
     return aresult, exp_data
    def test_add_analysis_results(self):
        """Test adding an analysis result."""
        exp_data = self._create_experiment_data()
        result_data = {"complex": 2 + 3j, "numpy": np.zeros(2)}
        aresult = AnalysisResult(name='qiskit_test',
                                 value=result_data,
                                 device_components=self.device_components,
                                 experiment_id=exp_data.experiment_id,
                                 quality=ResultQuality.GOOD,
                                 verified=True,
                                 tags=["foo", "bar"],
                                 service=self.experiment)
        exp_data.add_analysis_results(aresult)
        exp_data.save()

        rresult = AnalysisResult.load(aresult.result_id, self.experiment)
        self.assertEqual(exp_data.experiment_id, rresult.experiment_id)
        self._verify_analysis_result(aresult, rresult)