PythonBuilderCreateJobsTest.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzTest/AzTest.h>
  9. #include <AzCore/UnitTest/TestTypes.h>
  10. #include <AzCore/Component/ComponentApplication.h>
  11. #include <EditorPythonBindings/EditorPythonBindingsSymbols.h>
  12. #include "Source/PythonAssetBuilderSystemComponent.h"
  13. #include <PythonAssetBuilder/PythonAssetBuilderBus.h>
  14. #include <PythonAssetBuilder/PythonBuilderNotificationBus.h>
  15. #include "PythonBuilderTestShared.h"
  16. namespace UnitTest
  17. {
  18. // fixtures
  19. class PythonBuilderCreateJobsTest
  20. : public LeakDetectionFixture
  21. {
  22. protected:
  23. AZStd::unique_ptr<AZ::ComponentApplication> m_app;
  24. AZ::Entity* m_systemEntity = nullptr;
  25. void SetUp() override
  26. {
  27. AZ::ComponentApplication::Descriptor appDesc;
  28. m_app = AZStd::make_unique<AZ::ComponentApplication>();
  29. AZ::ComponentApplication::StartupParameters startupParameters;
  30. startupParameters.m_loadSettingsRegistry = false;
  31. m_systemEntity = m_app->Create(appDesc, startupParameters);
  32. }
  33. void TearDown() override
  34. {
  35. m_app.reset();
  36. }
  37. };
  38. // tests
  39. TEST_F(PythonBuilderCreateJobsTest, PythonBuilder_CreateJobs_Success)
  40. {
  41. using namespace PythonAssetBuilder;
  42. using namespace AssetBuilderSDK;
  43. const AZ::Uuid builderId = RegisterAssetBuilder(m_app.get(), m_systemEntity);
  44. MockJobHandler mockJobHandler;
  45. mockJobHandler.BusConnect(builderId);
  46. AssetBuilderSDK::CreateJobsRequest request;
  47. request.m_builderid = builderId;
  48. request.m_sourceFileUUID = AZ::Uuid::CreateRandom();
  49. AssetBuilderSDK::CreateJobsResponse response;
  50. response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed;
  51. PythonBuilderNotificationBus::EventResult(
  52. response,
  53. builderId,
  54. &PythonBuilderNotificationBus::Events::OnCreateJobsRequest,
  55. request);
  56. EXPECT_EQ(AssetBuilderSDK::CreateJobsResultCode::Success, response.m_result);
  57. EXPECT_EQ(0, mockJobHandler.m_onShutdownCount);
  58. }
  59. TEST_F(PythonBuilderCreateJobsTest, PythonBuilder_CreateJobs_Failed)
  60. {
  61. using namespace PythonAssetBuilder;
  62. using namespace AssetBuilderSDK;
  63. const AZ::Uuid builderId = RegisterAssetBuilder(m_app.get(), m_systemEntity);
  64. EXPECT_NE(AZ::Uuid::CreateNull(), builderId);
  65. MockJobHandler mockJobHandler;
  66. mockJobHandler.BusConnect(builderId);
  67. AssetBuilderSDK::CreateJobsRequest request;
  68. request.m_builderid = builderId;
  69. request.m_sourceFileUUID = AZ::Uuid::CreateNull();
  70. AssetBuilderSDK::CreateJobsResponse response;
  71. response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success;
  72. PythonBuilderNotificationBus::EventResult(
  73. response,
  74. request.m_builderid,
  75. &PythonBuilderNotificationBus::Events::OnCreateJobsRequest,
  76. request);
  77. EXPECT_EQ(AssetBuilderSDK::CreateJobsResultCode::Failed, response.m_result);
  78. EXPECT_EQ(0, mockJobHandler.m_onShutdownCount);
  79. }
  80. TEST_F(PythonBuilderCreateJobsTest, PythonBuilder_CreateJobs_OnShutdown)
  81. {
  82. using namespace PythonAssetBuilder;
  83. using namespace AssetBuilderSDK;
  84. const AZ::Uuid builderId = RegisterAssetBuilder(m_app.get(), m_systemEntity);
  85. EXPECT_NE(AZ::Uuid::CreateNull(), builderId);
  86. MockJobHandler mockJobHandler;
  87. mockJobHandler.BusConnect(builderId);
  88. PythonBuilderNotificationBus::Event(builderId, &PythonBuilderNotificationBus::Events::OnShutdown);
  89. EXPECT_EQ(1, mockJobHandler.m_onShutdownCount);
  90. }
  91. }