package org.nzbhydra.config.auth;

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

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

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

    /**
     * Verifies that the actual UserAuthConfig is may see admin.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is not may see admin.
     */
    public S isMaySeeAdmin() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is true
        if (!actual.isMaySeeAdmin()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is may see admin but is not.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is not may see admin.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is may see admin.
     */
    public S isNotMaySeeAdmin() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is false
        if (actual.isMaySeeAdmin()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is not may see admin but is.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is may see details dl.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is not may see details dl.
     */
    public S isMaySeeDetailsDl() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is true
        if (!actual.isMaySeeDetailsDl()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is may see details dl but is not.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is not may see details dl.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is may see details dl.
     */
    public S isNotMaySeeDetailsDl() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is false
        if (actual.isMaySeeDetailsDl()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is not may see details dl but is.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is may see stats.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is not may see stats.
     */
    public S isMaySeeStats() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is true
        if (!actual.isMaySeeStats()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is may see stats but is not.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is not may see stats.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is may see stats.
     */
    public S isNotMaySeeStats() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is false
        if (actual.isMaySeeStats()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is not may see stats but is.");
        }

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

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

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

        // null safe check
        String actualPassword = actual.getPassword();
        if (!Objects.areEqual(actualPassword, password)) {
            failWithMessage(assertjErrorMessage, actual, password, actualPassword);
        }

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

    /**
     * Verifies that the actual UserAuthConfig is show indexer selection.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is not show indexer selection.
     */
    public S isShowIndexerSelection() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is true
        if (!actual.isShowIndexerSelection()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is show indexer selection but is not.");
        }

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

    /**
     * Verifies that the actual UserAuthConfig is not show indexer selection.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual UserAuthConfig is show indexer selection.
     */
    public S isNotShowIndexerSelection() {
        // check that actual UserAuthConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is false
        if (actual.isShowIndexerSelection()) {
            failWithMessage("\nExpecting that actual UserAuthConfig is not show indexer selection but is.");
        }

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

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

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

        // null safe check
        String actualUsername = actual.getUsername();
        if (!Objects.areEqual(actualUsername, username)) {
            failWithMessage(assertjErrorMessage, actual, username, actualUsername);
        }

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

}
