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)) } }