test_version_repositories.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # Copyright 2021-2024 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. import os
  12. import pytest
  13. from taipy.core._version._version import _Version
  14. from taipy.core._version._version_fs_repository import _VersionFSRepository
  15. from taipy.core.exceptions import ModelNotFound
  16. class TestVersionFSRepository:
  17. def test_save_and_load(self, _version):
  18. repository = _VersionFSRepository()
  19. repository._save(_version)
  20. obj = repository._load(_version.id)
  21. assert isinstance(obj, _Version)
  22. def test_exists(self, _version):
  23. repository = _VersionFSRepository()
  24. repository._save(_version)
  25. assert repository._exists(_version.id)
  26. assert not repository._exists("not-existed-version")
  27. def test_load_all(self, _version):
  28. repository = _VersionFSRepository()
  29. for i in range(10):
  30. _version.id = f"_version_{i}"
  31. repository._save(_version)
  32. data_nodes = repository._load_all()
  33. assert len(data_nodes) == 10
  34. def test_load_all_with_filters(self, _version):
  35. repository = _VersionFSRepository()
  36. for i in range(10):
  37. _version.id = f"_version_{i}"
  38. _version.name = f"_version_{i}"
  39. repository._save(_version)
  40. objs = repository._load_all(filters=[{"id": "_version_2"}])
  41. assert len(objs) == 1
  42. def test_delete(self, _version):
  43. repository = _VersionFSRepository()
  44. repository._save(_version)
  45. repository._delete(_version.id)
  46. with pytest.raises(ModelNotFound):
  47. repository._load(_version.id)
  48. def test_delete_all(self, _version):
  49. repository = _VersionFSRepository()
  50. for i in range(10):
  51. _version.id = f"_version_{i}"
  52. repository._save(_version)
  53. assert len(repository._load_all()) == 10
  54. repository._delete_all()
  55. assert len(repository._load_all()) == 0
  56. def test_delete_many(self, _version):
  57. repository = _VersionFSRepository()
  58. for i in range(10):
  59. _version.id = f"_version_{i}"
  60. repository._save(_version)
  61. objs = repository._load_all()
  62. assert len(objs) == 10
  63. ids = [x.id for x in objs[:3]]
  64. repository._delete_many(ids)
  65. assert len(repository._load_all()) == 7
  66. def test_search(self, _version):
  67. repository = _VersionFSRepository()
  68. for i in range(10):
  69. _version.id = f"_version_{i}"
  70. _version.name = f"_version_{i}"
  71. repository._save(_version)
  72. assert len(repository._load_all()) == 10
  73. objs = repository._search("id", "_version_2")
  74. assert len(objs) == 1
  75. assert isinstance(objs[0], _Version)
  76. def test_export(self, tmpdir, _version):
  77. repository = _VersionFSRepository()
  78. repository._save(_version)
  79. repository._export(_version.id, tmpdir.strpath)
  80. dir_path = repository.dir_path
  81. assert os.path.exists(os.path.join(dir_path, f"{_version.id}.json"))