Files
devops-lib-gcp/test/unit/com/meesho/utilities/BuTeamMappingTest.groovy
T
2026-08-26 02:02:24 +05:30

208 lines
8.1 KiB
Groovy

package com.meesho.utilities
import com.lesfurets.jenkins.unit.BasePipelineTest
import org.junit.Before
import org.junit.Test
import static org.junit.Assert.*
class BuTeamMappingTest extends BasePipelineTest {
def script
@Override
@Before
void setUp() {
super.setUp()
script = loadScript('src/com/meesho/utilities/buTeamMapping.groovy')
}
// ────────────────────────────────
// validate()
// ────────────────────────────────
@Test
void validate_returnsNull_whenBuIsNull() {
assertNull(script.validate(null, 'devops'))
}
@Test
void validate_returnsNull_whenTeamIsNull() {
assertNull(script.validate('central', null))
}
@Test
void validate_returnsNull_whenBothArgsAreNull() {
assertNull(script.validate(null, null))
}
@Test
void validate_returnsTrue_forValidSupplyTeams() {
assertTrue(script.validate('supply', 'experience'))
assertTrue(script.validate('supply', 'fulfilment'))
assertTrue(script.validate('supply', 'cataloging'))
assertTrue(script.validate('supply', 'payout'))
assertTrue(script.validate('supply', 'returns'))
assertTrue(script.validate('supply', 'supplier-service'))
assertTrue(script.validate('supply', 'display-ads'))
assertTrue(script.validate('supply', 'supplier-live-commerce'))
}
@Test
void validate_returnsTrue_forValidDemandTeams() {
assertTrue(script.validate('demand', 'search'))
assertTrue(script.validate('demand', 'web'))
assertTrue(script.validate('demand', 'communications'))
assertTrue(script.validate('demand', 'discovery-platform'))
assertTrue(script.validate('demand', 'live-commerce'))
}
@Test
void validate_returnsTrue_forValidCentralTeams() {
assertTrue(script.validate('central', 'devops'))
assertTrue(script.validate('central', 'shared'))
assertTrue(script.validate('central', 'psec'))
assertTrue(script.validate('central', 'dbe'))
}
@Test
void validate_returnsTrue_forValidDataenggTeams() {
assertTrue(script.validate('dataengg', 'data-platform'))
assertTrue(script.validate('dataengg', 'data-intelligence'))
assertTrue(script.validate('dataengg', 'data-platform-nrt'))
assertTrue(script.validate('dataengg', 'data-platform-experimentation'))
}
@Test
void validate_returnsTrue_forValidDatascienceTeams() {
assertTrue(script.validate('datascience', 'ml-platform'))
assertTrue(script.validate('datascience', 'for-you'))
assertTrue(script.validate('datascience', 'recommendation'))
assertTrue(script.validate('datascience', 'advertisement'))
}
@Test
void validate_returnsTrue_forValidMcacheTeams() {
assertTrue(script.validate('mcache', 'mcache'))
assertTrue(script.validate('mcache', 'mcache-shared'))
assertTrue(script.validate('mcache', 'supplier-service'))
}
@Test
void validate_returnsTrue_forValidInfraTeams() {
assertTrue(script.validate('infra', 'devops'))
assertTrue(script.validate('infra', 'dbe'))
}
@Test
void validate_returnsFalse_whenTeamDoesNotBelongToBu() {
assertFalse(script.validate('supply', 'ml-platform'))
assertFalse(script.validate('demand', 'data-platform'))
assertFalse(script.validate('infra', 'search'))
assertFalse(script.validate('central', 'fulfilment'))
assertFalse(script.validate('dataengg', 'devops'))
}
@Test
void validate_isCaseSensitive() {
// 'Supply' vs 'supply' — map key is lowercase only
try {
def result = script.validate('Supply', 'experience')
// Unknown bu key returns null → NullPointerException from .contains()
assertTrue("Expected null or NPE for wrong-case bu", result == null || result == false)
} catch (NullPointerException expected) {
// Acceptable: unknown bu key → null entry → NPE on .contains()
}
}
// ────────────────────────────────
// get_bu_initials()
// ────────────────────────────────
@Test
void getBuInitials_returnsNull_forNullInput() {
assertNull(script.get_bu_initials(null))
}
@Test
void getBuInitials_returnsNull_forUnknownBu() {
assertNull(script.get_bu_initials('unknown-bu'))
}
@Test
void getBuInitials_returnsCorrect4LetterCodes_forAllKnownBUs() {
assertEquals('supl', script.get_bu_initials('supply'))
assertEquals('dmnd', script.get_bu_initials('demand'))
assertEquals('farm', script.get_bu_initials('farmiso'))
assertEquals('admn', script.get_bu_initials('admin'))
assertEquals('cntr', script.get_bu_initials('central'))
assertEquals('deng', script.get_bu_initials('dataengg'))
assertEquals('dsci', script.get_bu_initials('datascience'))
assertEquals('mche', script.get_bu_initials('mcache'))
assertEquals('infr', script.get_bu_initials('infra'))
}
// ────────────────────────────────
// get_team_initials()
// ────────────────────────────────
@Test
void getTeamInitials_returnsNull_forNullInput() {
assertNull(script.get_team_initials(null))
}
@Test
void getTeamInitials_returnsNull_forUnknownTeam() {
assertNull(script.get_team_initials('no-such-team'))
}
@Test
void getTeamInitials_returnsCorrectCodes_forRepresentativeTeams() {
assertEquals('devop', script.get_team_initials('devops'))
assertEquals('srch', script.get_team_initials('search'))
assertEquals('ml', script.get_team_initials('ml-platform'))
assertEquals('xp', script.get_team_initials('experience'))
assertEquals('fnf', script.get_team_initials('fulfilment'))
assertEquals('dp', script.get_team_initials('data-platform'))
assertEquals('ds', script.get_team_initials('data-science'))
assertEquals('comms', script.get_team_initials('communications'))
assertEquals('web', script.get_team_initials('web'))
assertEquals('mche', script.get_team_initials('mcache'))
assertEquals('pay', script.get_team_initials('payout'))
assertEquals('retrn', script.get_team_initials('returns'))
assertEquals('dplay', script.get_team_initials('display-ads'))
assertEquals('drank', script.get_team_initials('discovery-ranking'))
assertEquals('slcom', script.get_team_initials('supplier-live-commerce'))
}
// ────────────────────────────────
// get_initials() — dispatch
// ────────────────────────────────
@Test
void getInitials_dispatchesToBuInitialsMap() {
assertEquals('supl', script.get_initials('bu_initials', 'supply'))
assertEquals('cntr', script.get_initials('bu_initials', 'central'))
assertEquals('infr', script.get_initials('bu_initials', 'infra'))
}
@Test
void getInitials_dispatchesToTeamInitialsMap() {
assertEquals('devop', script.get_initials('team_initials', 'devops'))
assertEquals('srch', script.get_initials('team_initials', 'search'))
}
@Test
void getInitials_returnsUndefinedOption_forUnknownTargetMap() {
assertEquals('Undefined option', script.get_initials('typo_map', 'supply'))
}
@Test
void getInitials_returnsNull_whenTargetStringIsNull() {
assertNull(script.get_initials('bu_initials', null))
assertNull(script.get_initials('team_initials', null))
// Unknown map with null targetString also returns null (null guard fires first)
assertNull(script.get_initials('unknown_map', null))
}
}