test_service.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import pytest
  2. from clean_python import Resource, Service, v
  3. class V1Foo(Resource, version=v(1), name="foo"):
  4. pass
  5. class V1BetaFoo(V1Foo, version=v(1, "beta"), name="foo"):
  6. pass
  7. class V1AlphaFoo(V1BetaFoo, version=v(1, "alpha"), name="foo"):
  8. pass
  9. class V2AlphaFoo(Resource, version=v(2, "alpha"), name="foo"):
  10. pass
  11. @pytest.mark.parametrize(
  12. "resource_classes",
  13. [
  14. (V1AlphaFoo,),
  15. (V1BetaFoo, V1AlphaFoo),
  16. (V1Foo, V1BetaFoo, V1AlphaFoo),
  17. (V1AlphaFoo, V2AlphaFoo),
  18. ],
  19. )
  20. def test_service_init(resource_classes):
  21. resources = [cls() for cls in resource_classes]
  22. service = Service(*resources)
  23. assert set(service.resources) == set(resources)
  24. @pytest.mark.parametrize(
  25. "resource_classes,expected_versions",
  26. [
  27. ((V1BetaFoo,), {v(1, "beta"), v(1, "alpha")}),
  28. ((V1Foo,), {v(1), v(1, "beta"), v(1, "alpha")}),
  29. ],
  30. )
  31. def test_service_init_dynamic_gen(resource_classes, expected_versions):
  32. resources = [cls() for cls in resource_classes]
  33. service = Service(*resources)
  34. assert set(x.version for x in service.resources) == expected_versions