# pylint: skip-file

import asyncio
import socket
import sys

import aiohttp
import pytest
from asynctest import CoroutineMock, MagicMock

from pyskyq import REMOTECOMMANDS as RCMD

from .asynccontextmanagermock import AsyncContextManagerMock
from .mock_constants import REMOTE_TCP_MOCK


# Disabled for now -- to be refactored in https://gitlab.com/bradwood/pyskyq/issues/21

# def test_cli(mocker):

#     m = mocker.patch('socket.socket')
#     m.return_value.recv.side_effect = REMOTE_TCP_MOCK

#     a = mocker.patch('aiohttp.ClientSession.get', new_callable=AsyncContextManagerMock)
#     a.return_value.__aenter__.return_value.json = CoroutineMock(side_effect=SERVICE_MOCK)

#     mocker.patch.object(sys, 'argv', ['pyskyq', 'play'])

#     run()

#     m.assert_called_with(socket.AF_INET, socket.SOCK_STREAM)

#     assert m.return_value.recv.call_count == 4
#     m.return_value.send.assert_any_call(b'SKY 000.001\n')
#     m.return_value.send.assert_any_call(b'\x01')
#     m.return_value.send.assert_any_call(b'\x00')
#     m.return_value.send.assert_any_call(bytearray(b'\x04\x00\x00\x00\x00\x00\xe4\x00'))

#     # TODO test with --verbose

# pylint: skip-file

import asyncio
import socket
import sys

import aiohttp
import pytest
from asynctest import CoroutineMock, MagicMock

from pyskyq import REMOTECOMMANDS as RCMD

from .asynccontextmanagermock import AsyncContextManagerMock
from .mock_constants import REMOTE_TCP_MOCK


# Disabled for now -- to be refactored in https://gitlab.com/bradwood/pyskyq/issues/21

# def test_cli(mocker):

#     m = mocker.patch('socket.socket')
#     m.return_value.recv.side_effect = REMOTE_TCP_MOCK

#     a = mocker.patch('aiohttp.ClientSession.get', new_callable=AsyncContextManagerMock)
#     a.return_value.__aenter__.return_value.json = CoroutineMock(side_effect=SERVICE_MOCK)

#     mocker.patch.object(sys, 'argv', ['pyskyq', 'play'])

#     run()

#     m.assert_called_with(socket.AF_INET, socket.SOCK_STREAM)

#     assert m.return_value.recv.call_count == 4
#     m.return_value.send.assert_any_call(b'SKY 000.001\n')
#     m.return_value.send.assert_any_call(b'\x01')
#     m.return_value.send.assert_any_call(b'\x00')
#     m.return_value.send.assert_any_call(bytearray(b'\x04\x00\x00\x00\x00\x00\xe4\x00'))

#     # TODO test with --verbose

# pylint: skip-file # Disabled for now -- to be refactored in https://gitlab.com/bradwood/pyskyq/issues/21 # def test_cli(mocker): #     m = mocker.patch('socket.socket') #     m.return_value.recv.side_effect = REMOTE_TCP_MOCK #     a = mocker.patch('aiohttp.ClientSession.get', new_callable=AsyncContextManagerMock) #     a.return_value.__aenter__.return_value.json = CoroutineMock(side_effect=SERVICE_MOCK) #     mocker.patch.object(sys, 'argv', ['pyskyq', 'play']) #     run() #     m.assert_called_with(socket.AF_INET, socket.SOCK_STREAM) #     assert m.return_value.recv.call_count == 4 #     m.return_value.send.assert_any_call(b'SKY 000.001\n') #     m.return_value.send.assert_any_call(b'\x01') #     m.return_value.send.assert_any_call(b'\x00') #     m.return_value.send.assert_any_call(bytearray(b'\x04\x00\x00\x00\x00\x00\xe4\x00')) #     # TODO test with --verbose