Beispiel #1
0
    def test_super_transform_called(self, mocker):
        """Test that BaseTransformer.transform called."""

        df = d.create_date_test_df()

        x = DateDiffLeapYearTransformer(column_lower="a",
                                        column_upper="b",
                                        new_column_name="c",
                                        drop_cols=True)

        expected_call_args = {
            0: {
                "args": (d.create_date_test_df(), ),
                "kwargs": {}
            }
        }

        with h.assert_function_call(
                mocker,
                tubular.base.BaseTransformer,
                "transform",
                expected_call_args,
                return_value=d.create_date_test_df(),
        ):

            x.transform(df)
Beispiel #2
0
    def test_row_type_error(self):
        """Test that an exception is raised if row is not a pd.Series"""

        row = "dummy_row"
        date_transformer = DateDiffLeapYearTransformer(column_lower="a",
                                                       column_upper="b",
                                                       new_column_name="c",
                                                       drop_cols=True)

        with pytest.raises(TypeError, match="row should be a pd.Series"):

            date_transformer.calculate_age(row=row)
Beispiel #3
0
    def test_null_replacement(self):
        """Test correct value is replaced using null_replacement."""

        row = pd.Series({"a": np.NaN, "b": np.NaN})
        date_transformer = DateDiffLeapYearTransformer(
            column_lower="a",
            column_upper="b",
            new_column_name="c",
            drop_cols=True,
            missing_replacement="missing_replacement",
        )

        val = date_transformer.calculate_age(row=row)

        assert val == "missing_replacement"
Beispiel #4
0
    def test_lower_column_type_error(self):
        """Test that an exception is raised if lower date value is not a datetime object."""

        row = pd.Series({"a": "dummy_val", "b": datetime.date(2020, 5, 10)})
        date_transformer = DateDiffLeapYearTransformer(column_lower="a",
                                                       column_upper="b",
                                                       new_column_name="c",
                                                       drop_cols=True)

        with pytest.raises(
                TypeError,
                match=
                "lower column values should be datetime.datetime or datetime.date objects",
        ):

            date_transformer.calculate_age(row=row)
Beispiel #5
0
    def test_expected_output_nulls(self, df, expected):
        """Test that the output is expected from transform, when columns are nulls."""

        x = DateDiffLeapYearTransformer(column_lower="a",
                                        column_upper="b",
                                        new_column_name="c",
                                        drop_cols=False)

        df_transformed = x.transform(df)

        h.assert_frame_equal_msg(
            actual=df_transformed,
            expected=expected,
            msg_tag=
            "Unexpected values in DateDiffLeapYearTransformer.transform (nulls)",
        )
Beispiel #6
0
    def test_super_init_called(self, mocker):
        """Test that init calls BaseTransformer.init."""

        expected_call_args = {
            0: {
                "args": (),
                "kwargs": {
                    "columns": ["dummy_1", "dummy_2"],
                    "verbose": True,
                    "copy": True,
                },
            }
        }

        with h.assert_function_call(mocker, tubular.base.BaseTransformer,
                                    "__init__", expected_call_args):

            DateDiffLeapYearTransformer(
                column_lower="dummy_1",
                column_upper="dummy_2",
                new_column_name="dummy_3",
                drop_cols=True,
                verbose=True,
                copy=True,
            )
Beispiel #7
0
    def test_expected_output_drop_cols_false(self, df, expected):
        """Test that the output is expected from transform, when drop_cols is False.

        This tests positive year gaps , negative year gaps, and missing values.

        """

        x = DateDiffLeapYearTransformer(column_lower="a",
                                        column_upper="b",
                                        new_column_name="c",
                                        drop_cols=False)

        df_transformed = x.transform(df)

        h.assert_frame_equal_msg(
            actual=df_transformed,
            expected=expected,
            msg_tag=
            "Unexpected values in DateDiffLeapYearTransformer.transform (without drop_cols)",
        )
Beispiel #8
0
    def test_drop_cols_type_error(self):
        """Test that an exception is raised if drop_cols is not a bool."""

        with pytest.raises(TypeError, match="drop_cols should be a bool"):

            DateDiffLeapYearTransformer(
                column_lower="dummy_1",
                column_upper="dummy_2",
                new_column_name="dummy_3",
                drop_cols=123,
            )
Beispiel #9
0
    def test_new_column_name_type_error(self):
        """Test that an exception is raised if new_column_name is not a str."""

        with pytest.raises(TypeError, match="new_column_name should be a str"):

            DateDiffLeapYearTransformer(
                column_lower="dummy_1",
                column_upper="dummy_2",
                new_column_name=123,
                drop_cols=True,
            )
Beispiel #10
0
    def test_inheritance(self):
        """Test that DateDiffLeapYearTransformer inherits from BaseTransformer."""

        x = DateDiffLeapYearTransformer(
            column_lower="dummy_1",
            column_upper="dummy_2",
            new_column_name="dummy_3",
            drop_cols=True,
        )

        h.assert_inheritance(x, tubular.base.BaseTransformer)
Beispiel #11
0
    def test_class_methods(self):
        """Test that DateDiffLeapYearTransformer has transform method."""

        x = DateDiffLeapYearTransformer(
            column_lower="dummy_1",
            column_upper="dummy_2",
            new_column_name="dummy_3",
            drop_cols=True,
        )

        h.test_object_method(obj=x,
                             expected_method="transform",
                             msg="transform")
        h.test_object_method(obj=x,
                             expected_method="calculate_age",
                             msg="calculate_message")
Beispiel #12
0
    def test_missing_replacement_type_error(self):
        """Test that an exception is raised if missing_replacement is not the correct type."""

        with pytest.raises(
                TypeError,
                match=
                "if not None, missing_replacement should be an int, float or string",
        ):

            DateDiffLeapYearTransformer(
                column_lower="dummy_1",
                column_upper="dummy_2",
                new_column_name="dummy_3",
                drop_cols=False,
                missing_replacement=[1, 2, 3],
            )
Beispiel #13
0
    def test_inputs_set_to_attribute(self):
        """Test that the value passed for new_column_name and drop_cols are saved in attributes of the same name."""

        value_1 = "test_name"
        value_2 = True

        x = DateDiffLeapYearTransformer(
            column_lower="dummy_1",
            column_upper="dummy_2",
            new_column_name=value_1,
            drop_cols=value_2,
            missing_replacement="dummy_3",
        )

        h.test_object_attributes(
            obj=x,
            expected_attributes={
                "new_column_name": value_1,
                "drop_cols": value_2,
                "missing_replacement": "dummy_3",
            },
            msg="Attributes for DateDiffLeapYearTransformer set in init",
        )