Index: vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/ProductIdRecycleerder/Test.cls.xml
===================================================================
diff -u -r64528 -r64533
--- vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/ProductIdRecycleerder/Test.cls.xml (.../Test.cls.xml) (revision 64528)
+++ vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/ProductIdRecycleerder/Test.cls.xml (.../Test.cls.xml) (revision 64533)
@@ -337,13 +337,7 @@
#dim ProductId As %String = "1001"
#dim LoggingDetail As %String
- // Aangezien we met data werken, waarop iedere instantie van de ProductIdRecycleerder mapt, kunnen we hier, om louter specifieke logging te testen, verschillende instanties gebruiken.
- // De 1e instantie (die in de property) wordt gebruikt om de data op te zetten, de lokale instantie wordt gebruikt om de specifieke logging hier te testen.
- // Op die manier vermijden we ook de logging m.b.t. PersisteerRanges en GeefTeRecyclerenProductId hier te moeten voorzien (= elders getest).
- Do ..ProductIdRecycleerder.PersisteerRanges()
- Do ..ProductIdRecycleerder.GeefTeRecyclerenProductId(Request) // Geeft ProductId 1000
- Do ..ProductIdRecycleerder.GeefTeRecyclerenProductId(Request) // Geeft ProductId 1001
- Do ..ProductIdRecycleerder.GeefTeRecyclerenProductId(Request) // Geeft ProductId 1002
+ Do ..PersisteerRangeEnZetDataOpVoorEersteDrieProductIds(Request)
#dim LoggerMock As vhLib.Logger = ##class(vhTest.Mock.vhLib.Logger).%New("ProductIdRecycleerder")
Set LoggingDetail = "ProductId '"_ProductId_"' werd weer vrijgegeven voor LadeVariant '"_LadeVariant_"'. "
@@ -367,7 +361,7 @@
#dim LoggingDetail As %String
#dim LoggerMock As vhLib.Logger = ##class(vhTest.Mock.vhLib.Logger).%New("ProductIdRecycleerder")
- Set LoggingDetail = "Voor LadeVariant '"_LadeVariant_"' werden van de desbetreffende range (zie: property in ProductIdRecycleerder) alle voorheen nog niet gepersisteerde ProductId's zojuist gepersisteerd (Global "_..#GlobalNaam_"). "
+ Set LoggingDetail = "Voor LadeVariant '"_LadeVariant_"' werden van de desbetreffende range (zie: property in ProductIdRecycleerder) alle voorheen nog niet gepersisteerde ProductId's zojuist gepersisteerd (Global "_..#GlobalNaam_"). "
Set LoggingDetail = LoggingDetail _ "Bij de eerstvolgende vraag om een ProductId in deze range zullen ze beschikbaar zijn om gebruikt te worden door de ProductIdRecycleerder. "
Set LoggingDetail = LoggingDetail _ "Volgende ProductId's werden zopas gepersisteerd: '" _ Range _ "'. "
Do LoggerMock.VerwachtMethodCall("Info", "Range gepersisteerd", LoggingDetail)
@@ -386,6 +380,62 @@
]]>
+
+ Geen vrijgave, geen logging!
+
+ Set LoggerMock = ##class(vhTest.Mock.vhLib.Logger).%New("ProductIdRecycleerder")
+ Set VerwachteProductId = "1003"
+ Set VerwachteAantalOnbenut = 2
+ Do ..DoGeefTeRecyclerenProductIdEnAssertLoggingSchaarsteInRange(VerwachteProductId, VerwachteAantalOnbenut, Range, LoggerMock)
+ Do ..AssertGlobalKeys(111100)
+
+ Set AantalSecondenInVerleden = 3601
+ Do ..ZetTimestampInDataVanProductId1001(AantalSecondenInVerleden) // > 1 uur oud => Automatische vrijgave en logging!
+
+ Set LoggerMock = ##class(vhTest.Mock.vhLib.Logger).%New("ProductIdRecycleerder") // P.s.: Nieuwe instantie omdat VerwachtMethodCall niet overschreven mag worden volgens het Mocking framework.
+ Set LoggingDetail = "ProductId '1001' werd weer vrijgegeven voor LadeVariant '"_LadeVariant_"'. "
+ Do LoggerMock.VerwachtMethodCall("Info", "GeefProductIdVrij", LoggingDetail)
+
+ Set LoggingDetail = "ProductId '1001' werd al langer dan een uur (onterecht) vastgehouden en is bij deze automatisch terug vrijgegeven voor hergebruik. "
+ Do LoggerMock.VerwachtMethodCall("Info", "Geblokkeerde ProductId vrijgegeven", LoggingDetail)
+
+ Do ..AssertGlobalKeys(111100)
+ Set VerwachteProductId = "1004"
+ Set VerwachteAantalOnbenut = 2
+ Do ..DoGeefTeRecyclerenProductIdEnAssertLoggingSchaarsteInRange(VerwachteProductId, VerwachteAantalOnbenut, Range, LoggerMock)
+ Do ..AssertGlobalKeys(101110) // 1001 werd terug vrijgegeven.
+
+ Set @..#GlobalNaam("LBX",1003) = 1 // 2e piece met timestamp doelbewust verwijderd om error-logging te testen...
+
+ Set LoggerMock = ##class(vhTest.Mock.vhLib.Logger).%New("ProductIdRecycleerder") // P.s.: Nieuwe instantie omdat VerwachtMethodCall niet overschreven mag worden volgens het Mocking framework.
+ Set LoggingDetail = "ProductId '1003' is in gebruik, maar de timestamp die het moment van uitbesteding ervan weergeeft ontbreekt. "
+ Set LoggingDetail = LoggingDetail _ "Gelieve na te kijken in de logging wanneer deze ProductId de laatste keer werd uitbesteed. "
+ Set LoggingDetail = LoggingDetail _ "Indien dit langer dan een uur geleden was, gelieve dan de ProductId manueel weer vrij te geven. "
+ Do LoggerMock.VerwachtMethodCall("Error", "Inconsistente data", LoggingDetail)
+
+ Set VerwachteProductId = "1001"
+ Set VerwachteAantalOnbenut = 1
+ Do ..DoGeefTeRecyclerenProductIdEnAssertLoggingSchaarsteInRange(VerwachteProductId, VerwachteAantalOnbenut, Range, LoggerMock)
+ Do ..AssertGlobalKeys(111110)
+]]>
+
+
-VerwachteProductId:%String,VerwachteAantalOnbenut:%Integer,Range:%String
+VerwachteProductId:%String,VerwachteAantalOnbenut:%Integer,Range:%String,Logger:vhLib.Logger=""
1
+
+Request:AXif.Dynamics.CalculatedProductIn.MessageParts.AxdEntityRequest
+1
+
+
+
+
+AantalSecondenInVerleden:%Integer
+1
+
+
+
1
(DateTimeInSecondenUitbestedingProductId + 3600)) {
+ Do ..GeefProductIdVrij(ProductId)
+ Set LoggingDetail = "ProductId '"_ProductId_"' werd al langer dan een uur (onterecht) vastgehouden en is bij deze automatisch terug vrijgegeven voor hergebruik. "
+ Do ..Logger.Info("Geblokkeerde ProductId vrijgegeven", LoggingDetail)
+ } Else {
+ Set AantalVrijePlaatsenInRangeVolgensLadeVariant = AantalVrijePlaatsenInRangeVolgensLadeVariant - 1
+ }
}
} Else {
Set AantalNietGepersisteerdeProductIdsInRange = AantalNietGepersisteerdeProductIdsInRange + 1