package org.nzbhydra.mediainfo;

import org.assertj.core.api.AbstractObjectAssert;
import org.assertj.core.util.Objects;

/**
 * Abstract base class for {@link MediaInfoTO} specific assertions - Generated by CustomAssertionGenerator.
 */
@jakarta.annotation.Generated(value = "assertj-assertions-generator")
public abstract class AbstractMediaInfoTOAssert<S extends AbstractMediaInfoTOAssert<S, A>, A extends MediaInfoTO> extends AbstractObjectAssert<S, A> {

    /**
     * Creates a new <code>{@link AbstractMediaInfoTOAssert}</code> to make assertions on actual MediaInfoTO.
     *
     * @param actual the MediaInfoTO we want to make assertions on.
     */
    protected AbstractMediaInfoTOAssert(A actual, Class<S> selfType) {
        super(actual, selfType);
    }

    /**
     * Verifies that the actual MediaInfoTO's imdbId is equal to the given one.
     *
     * @param imdbId the given imdbId to compare the actual MediaInfoTO's imdbId to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's imdbId is not equal to the given one.
     */
    public S hasImdbId(String imdbId) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting imdbId of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualImdbId = actual.getImdbId();
        if (!Objects.areEqual(actualImdbId, imdbId)) {
            failWithMessage(assertjErrorMessage, actual, imdbId, actualImdbId);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's posterUrl is equal to the given one.
     *
     * @param posterUrl the given posterUrl to compare the actual MediaInfoTO's posterUrl to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's posterUrl is not equal to the given one.
     */
    public S hasPosterUrl(String posterUrl) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting posterUrl of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualPosterUrl = actual.getPosterUrl();
        if (!Objects.areEqual(actualPosterUrl, posterUrl)) {
            failWithMessage(assertjErrorMessage, actual, posterUrl, actualPosterUrl);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's title is equal to the given one.
     *
     * @param title the given title to compare the actual MediaInfoTO's title to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's title is not equal to the given one.
     */
    public S hasTitle(String title) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting title of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualTitle = actual.getTitle();
        if (!Objects.areEqual(actualTitle, title)) {
            failWithMessage(assertjErrorMessage, actual, title, actualTitle);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's tmdbId is equal to the given one.
     *
     * @param tmdbId the given tmdbId to compare the actual MediaInfoTO's tmdbId to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's tmdbId is not equal to the given one.
     */
    public S hasTmdbId(String tmdbId) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting tmdbId of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualTmdbId = actual.getTmdbId();
        if (!Objects.areEqual(actualTmdbId, tmdbId)) {
            failWithMessage(assertjErrorMessage, actual, tmdbId, actualTmdbId);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's tvdbId is equal to the given one.
     *
     * @param tvdbId the given tvdbId to compare the actual MediaInfoTO's tvdbId to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's tvdbId is not equal to the given one.
     */
    public S hasTvdbId(String tvdbId) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting tvdbId of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualTvdbId = actual.getTvdbId();
        if (!Objects.areEqual(actualTvdbId, tvdbId)) {
            failWithMessage(assertjErrorMessage, actual, tvdbId, actualTvdbId);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's tvmazeId is equal to the given one.
     *
     * @param tvmazeId the given tvmazeId to compare the actual MediaInfoTO's tvmazeId to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's tvmazeId is not equal to the given one.
     */
    public S hasTvmazeId(String tvmazeId) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting tvmazeId of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualTvmazeId = actual.getTvmazeId();
        if (!Objects.areEqual(actualTvmazeId, tvmazeId)) {
            failWithMessage(assertjErrorMessage, actual, tvmazeId, actualTvmazeId);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's tvrageId is equal to the given one.
     *
     * @param tvrageId the given tvrageId to compare the actual MediaInfoTO's tvrageId to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's tvrageId is not equal to the given one.
     */
    public S hasTvrageId(String tvrageId) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting tvrageId of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualTvrageId = actual.getTvrageId();
        if (!Objects.areEqual(actualTvrageId, tvrageId)) {
            failWithMessage(assertjErrorMessage, actual, tvrageId, actualTvrageId);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual MediaInfoTO's year is equal to the given one.
     *
     * @param year the given year to compare the actual MediaInfoTO's year to.
     * @return this assertion object.
     * @throws AssertionError - if the actual MediaInfoTO's year is not equal to the given one.
     */
    public S hasYear(Integer year) {
        // check that actual MediaInfoTO we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting year of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        Integer actualYear = actual.getYear();
        if (!Objects.areEqual(actualYear, year)) {
            failWithMessage(assertjErrorMessage, actual, year, actualYear);
        }

        // return the current assertion for method chaining
        return myself;
    }

}
