<?php

require_once 'ABaseTest.php';

class FcmTest extends BaseTest
{
    protected $token;
    protected $userId;

    public function setUp()
    {
        parent::setUp();
        $loginInfo = $this->doLogin();
        $this->token = $loginInfo['token'];
        $this->userId = $loginInfo['user_id'];
    }

    public function doLogin()
    {
        $login = $this->login(getenv("TEST_ADMIN_USERNAME"), getenv("TEST_ADMIN_PASSWORD"));
        $this->assertContains(
            [
                'success' => true
            ],
            $login,
            "login Failed"
        );
        return $login['data'];
    }

    public function testRegisterDeviceTokenSuccess()
    {
        try {
            $deviceToken = uniqid();
            $this->doAPIShouldGiveSuccessResponse(
                'POST',
                'fcm/register/token',
                [
                    'json' => [
                        'token' => $deviceToken,
                        'user_id' => $this->userId
                    ]
                ],
                200,
                "\ntestRegisterDeviceTokenSuccess passed"
            );

            return $deviceToken;
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testDetailSuccess Failed", $e->getMessage()]);
        }
    }

    /**
     * @depends testRegisterDeviceTokenSuccess
     * @param $deviceToken
     */
    public function testUnregisterDeviceTokenSuccess($deviceToken)
    {
        try {
            $this->doAPIShouldGiveSubsetResponse(
                'POST',
                'fcm/unregister/token',
                200,
                [],
                "testUnregisterDeviceTokenSuccess Passed",
                [
                    'json' => [
                        'token' => $deviceToken
                    ]
                ]
            );
        } catch (Exception $e) {
            self::$messages = array_merge(self::$messages, ["testUnregisterDeviceTokenSuccess Failed", $e->getMessage()]);
        }
    }
}
