Marketplace
rithum
Rithum B2B patterns and distribution API
$ 설치
git clone https://github.com/violetio/violet-ai-plugins /tmp/violet-ai-plugins && cp -r /tmp/violet-ai-plugins/archive/plugins-2025-12-30/v-rithum/skills/rithum ~/.claude/skills/violet-ai-plugins// tip: Run this command in your terminal to install the skill
SKILL.md
name: rithum description: Rithum B2B patterns and distribution API
Rithum Best Practices
Leverage Data Model Guarantees
Trust guaranteed non-null fields:
// DO: Trust the data model guarantees
order.setTotalPrice(PriceUtils.centsToDollars(transactableBag.getTotal()));
// DON'T: Add unnecessary null checks
if (Objects.nonNull(transactableBag.getTotal())) {
order.setTotalPrice(PriceUtils.centsToDollars(transactableBag.getTotal()));
}
Clean Separation of Concerns
- Keep main composer methods focused on orchestration
- Extract complex logic into focused helper methods
- Use static utility classes for reusable functionality
Common Compilation Issues
OfferData.Shipping.Price Structure
// CORRECT
OfferData.Shipping.Price price = new OfferData.Shipping.Price();
// WRONG
OfferData.Shipping.Method.Price price = new OfferData.Shipping.Method.Price();
MerchantConfiguration Method Names
// CORRECT
config.setRithumConfig(rithumConfig);
// WRONG
config.setRithum(rithumConfig);
Type Consistency
// CORRECT - merchantId is Integer
assertEquals(Integer.valueOf(12345), result.getMerchantId());
// WRONG
assertEquals(Long.valueOf(12345L), result.getMerchantId());
Testing Patterns
Static Method Mocking
@Test
public void testOrderSyncWithFallbackShipping() {
try (MockedStatic<RithumMerchantConfig> mockedRithumConfig = Mockito.mockStatic(RithumMerchantConfig.class)) {
mockedRithumConfig.when(() -> RithumMerchantConfig.shouldUseFallbackShippingMethods(config)).thenReturn(true);
List<OfferData.Shipping> result = rithumOrderSyncService.getShippingEstimates(request);
assertNotNull(result);
assertTrue(CollectionUtils.isNotEmpty(result));
}
}
Test Data Creation
private DecryptedMerchantCredentials createDecryptedMerchantCredentials() {
DecryptedMerchantCredentials dmc = new DecryptedMerchantCredentials();
dmc.setMerchantId(12345); // Use Integer, not Long
dmc.setPlatform(Merchant.Platform.RITHUM);
return dmc;
}
Comprehensive Testing Strategy
- Test successful composition with complete data
- Test edge cases: null addresses, empty collections
- Test status mapping for all enum values
- Test fallback shipping configuration
- Verify property mapping accuracy
- Use realistic test data
Repository

violetio
Author
violetio/violet-ai-plugins/archive/plugins-2025-12-30/v-rithum/skills/rithum
0
Stars
0
Forks
Updated4h ago
Added1w ago