1
0

test_prerequisites.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from unittest.mock import mock_open
  2. import pytest
  3. from reflex import constants
  4. from reflex.config import Config
  5. from reflex.utils.prerequisites import _update_next_config, initialize_requirements_txt
  6. @pytest.mark.parametrize(
  7. "config, export, expected_output",
  8. [
  9. (
  10. Config(
  11. app_name="test",
  12. ),
  13. False,
  14. 'module.exports = {basePath: "", compress: true, reactStrictMode: true, trailingSlash: true};',
  15. ),
  16. (
  17. Config(
  18. app_name="test",
  19. next_compression=False,
  20. ),
  21. False,
  22. 'module.exports = {basePath: "", compress: false, reactStrictMode: true, trailingSlash: true};',
  23. ),
  24. (
  25. Config(
  26. app_name="test",
  27. frontend_path="/test",
  28. ),
  29. False,
  30. 'module.exports = {basePath: "/test", compress: true, reactStrictMode: true, trailingSlash: true};',
  31. ),
  32. (
  33. Config(
  34. app_name="test",
  35. frontend_path="/test",
  36. next_compression=False,
  37. ),
  38. False,
  39. 'module.exports = {basePath: "/test", compress: false, reactStrictMode: true, trailingSlash: true};',
  40. ),
  41. (
  42. Config(
  43. app_name="test",
  44. ),
  45. True,
  46. 'module.exports = {basePath: "", compress: true, reactStrictMode: true, trailingSlash: true, output: "export", distDir: "_static"};',
  47. ),
  48. ],
  49. )
  50. def test_update_next_config(config, export, expected_output):
  51. output = _update_next_config(config, export=export)
  52. assert output == expected_output
  53. def test_initialize_requirements_txt(mocker):
  54. # File exists, reflex is included, do nothing
  55. mocker.patch("os.path.exists", return_value=True)
  56. open_mock = mock_open(read_data="reflex==0.2.9")
  57. mocker.patch("builtins.open", open_mock)
  58. initialize_requirements_txt()
  59. assert open_mock.call_count == 1
  60. assert open_mock().write.call_count == 0
  61. def test_initialize_requirements_txt_missing_reflex(mocker):
  62. # File exists, reflex is not included, add reflex
  63. open_mock = mock_open(read_data="random-package=1.2.3")
  64. mocker.patch("builtins.open", open_mock)
  65. initialize_requirements_txt()
  66. # Currently open for read, then open for append
  67. assert open_mock.call_count == 2
  68. assert open_mock().write.call_count == 1
  69. assert (
  70. open_mock().write.call_args[0][0]
  71. == f"\n{constants.RequirementsTxt.DEFAULTS_STUB}{constants.Reflex.VERSION}\n"
  72. )
  73. def test_initialize_requirements_txt_not_exist(mocker):
  74. # File does not exist, create file with reflex
  75. mocker.patch("os.path.exists", return_value=False)
  76. open_mock = mock_open()
  77. mocker.patch("builtins.open", open_mock)
  78. initialize_requirements_txt()
  79. assert open_mock.call_count == 2
  80. assert open_mock().write.call_count == 1
  81. assert (
  82. open_mock().write.call_args[0][0]
  83. == f"\n{constants.RequirementsTxt.DEFAULTS_STUB}{constants.Reflex.VERSION}\n"
  84. )