def update_model_state(add_displacement_timestamp, add_regression_timestamp,
                       remove_model_timestamp, displacement_value,
                       displacement_unit, plotted_models,
                       remove_model_selection, regression_model_choice,
                       training_start_date, training_end_date,
                       regression_model_name):
    return model_state.update(load_data, regression_models,
                              add_displacement_timestamp,
                              add_regression_timestamp, remove_model_timestamp,
                              displacement_value, displacement_unit,
                              plotted_models, remove_model_selection,
                              regression_model_choice, training_start_date,
                              training_end_date, regression_model_name)
    def test_initial_empty_model_list(self):
        add_displacement_timestamp = '0'
        add_regression_timestamp = '0'
        remove_model_timestamp = '0'
        displacement_value = 0
        displacement_unit = 'halfhours'
        remove_model_selection = ''
        plotted_models = []
        training_start_date = 'None'
        training_end_date = 'None'
        regression_model_choice = 'None'
        regression_model_name = ''

        expected_state = json.dumps([])
        actual_state = update(self.load_data, self.regression_models, add_displacement_timestamp, add_regression_timestamp, remove_model_timestamp, displacement_value,
                              displacement_unit, plotted_models, remove_model_selection, regression_model_choice, training_start_date,
                              training_end_date, regression_model_name)
        self.assertEqual(actual_state, expected_state)
    def test_initial_empty_model_list_add_new_displacement_model(self):
        add_displacement_timestamp = '1'
        add_regression_timestamp = '0'
        remove_model_timestamp = '0'
        displacement_value = 5
        displacement_unit = 'halfhours'
        plotted_models = json.dumps([])
        remove_model_selection = ''
        training_start_date = 'None'
        training_end_date = 'None'
        regression_model_choice = 'None'
        regression_model_name = ''

        expected_state = json.dumps([dict(model_name='-5 halfhours', model_type='displacement', model_color='color1', displacement_value=5,
                                          displacement_unit='halfhours')])
        actual_state = update(self.load_data, self.regression_models, add_displacement_timestamp, add_regression_timestamp, remove_model_timestamp, displacement_value,
                              displacement_unit, plotted_models, remove_model_selection, regression_model_choice, training_start_date,
                              training_end_date, regression_model_name)
        self.assertEqual(actual_state, expected_state)
    def test_existing_models_list_add_new_regression_model(self, mock_function):
        mock_function.return_value = dict(coefficients=[111.0], intercept=0)
        add_displacement_timestamp = '0'
        add_regression_timestamp = '1'
        remove_model_timestamp = '0'
        displacement_value = 10
        displacement_unit = 'hours'
        plotted_models = json.dumps([dict(model_name='-5 halfhours', model_type='displacement', model_color='color1', displacement_value=5,
                                          displacement_unit='halfhours')])
        remove_model_selection = ''
        regression_model_choice = 'model1'
        training_start_date = '2018-01-02'
        training_end_date = '2018-01-03'
        regression_model_name = 'custom_model_name'

        expected_state = json.dumps([dict(model_name='-5 halfhours', model_type='displacement', model_color='color1', displacement_value=5,
                                          displacement_unit='halfhours'), dict(model_name='custom_model_name', model_type='regression', model_color='color1', coefficients=[111.0], intercept=0,
                                                                               x_columns=["Temperature"], corrected_column=None)])
        actual_state = update(self.load_data, self.regression_models, add_displacement_timestamp, add_regression_timestamp, remove_model_timestamp, displacement_value,
                              displacement_unit, plotted_models, remove_model_selection, regression_model_choice, training_start_date,
                              training_end_date, regression_model_name)
        self.assertEqual(actual_state, expected_state)
    def test_existing_models_list_remove_model(self):
        add_displacement_timestamp = '0'
        add_regression_timestamp = '0'
        remove_model_timestamp = '1'
        displacement_value = 0
        displacement_unit = 'hours'
        plotted_models = json.dumps([dict(model_name='-5 halfhours', model_type='displacement', model_color='color1', displacement_value=5,
                                          displacement_unit='halfhours'),
                                     dict(model_name='model1', model_type='regression', model_color='color2',
                                          coefficients=[111.0], intercept=0, corrected_column=None)])
        remove_model_selection = '-5 halfhours'
        regression_model_choice = 'None'
        training_start_date = 'None'
        training_end_date = 'None'
        regression_model_name = 'model1'

        expected_state = json.dumps([dict(model_name='model1', model_type='regression', model_color='color2',
                                          coefficients=[111.0], intercept=0, corrected_column=None)])
        actual_state = update(self.load_data, self.regression_models, add_displacement_timestamp, add_regression_timestamp, remove_model_timestamp, displacement_value,
                              displacement_unit, plotted_models, remove_model_selection, regression_model_choice, training_start_date,
                              training_end_date, regression_model_name)
        self.assertEqual(actual_state, expected_state)