# Copyright (C) 2010-2024 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/


import pytest
from rhodecode import events
from rhodecode.lib.utils2 import AttributeDict
from rhodecode.tests.conftest import HTTPBIN_DOMAIN


@pytest.fixture()
def repo_push_event(backend, user_regular):
    commits = [
        {"message": "ancestor commit fixes #15"},
        {"message": "quick fixes"},
        {"message": "change that fixes #41, #2"},
        {"message": "this is because 5b23c3532 broke stuff"},
        {"message": "last commit"},
    ]
    r = backend.create_repo(commits)

    commit_ids = list(backend.commit_ids.values())
    repo_name = backend.repo_name
    alias = backend.alias

    scm_extras = AttributeDict(
        {
            "ip": "127.0.0.1",
            "username": user_regular.username,
            "user_id": user_regular.user_id,
            "action": "",
            "repository": repo_name,
            "scm": alias,
            "config": "",
            "repo_store": "",
            "server_url": HTTPBIN_DOMAIN,
            "make_lock": None,
            "locked_by": [None],
            "commit_ids": commit_ids,
        }
    )

    return events.RepoPushEvent(repo_name=repo_name, pushed_commit_ids=commit_ids, extras=scm_extras)
