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