test_search_telemetry_categorization_region.js (5457B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 /** 5 * Tests the region logic in DomainToCategoriesMap. 6 */ 7 8 "use strict"; 9 10 ChromeUtils.defineESModuleGetters(this, { 11 SERPDomainToCategoriesMap: 12 "moz-src:///browser/components/search/SERPCategorization.sys.mjs", 13 }); 14 15 add_task(async function record_matches_region() { 16 const TESTS = [ 17 { 18 title: "Home region, blank include and exclude.", 19 record: { 20 includeRegions: [], 21 excludeRegions: [], 22 }, 23 region: "US", 24 expectedResult: false, 25 }, 26 { 27 title: "Null region, blank include and exclude.", 28 record: { 29 includeRegions: [], 30 excludeRegions: [], 31 }, 32 region: null, 33 expectedResult: false, 34 }, 35 { 36 title: "Null region, with include.", 37 record: { 38 includeRegions: ["US"], 39 excludeRegions: [], 40 }, 41 region: null, 42 expectedResult: false, 43 }, 44 { 45 title: "Blank region, blank include and exclude.", 46 record: { 47 includeRegions: [], 48 excludeRegions: [], 49 }, 50 region: "", 51 expectedResult: false, 52 }, 53 { 54 title: "Blank region, with include.", 55 record: { 56 includeRegions: ["US"], 57 excludeRegions: [], 58 }, 59 region: "", 60 expectedResult: false, 61 }, 62 { 63 title: "Included region.", 64 record: { 65 includeRegions: ["US"], 66 excludeRegions: [], 67 }, 68 region: "US", 69 expectedResult: true, 70 }, 71 { 72 title: "Region is not included.", 73 record: { 74 includeRegions: ["DE"], 75 excludeRegions: [], 76 }, 77 region: "US", 78 expectedResult: false, 79 }, 80 { 81 title: "Multiple included regions.", 82 record: { 83 includeRegions: ["DE", "CA", "US"], 84 excludeRegions: [], 85 }, 86 region: "US", 87 expectedResult: true, 88 }, 89 { 90 title: "Excluded region.", 91 record: { 92 includeRegions: [], 93 excludeRegions: ["US"], 94 }, 95 region: "US", 96 expectedResult: false, 97 }, 98 { 99 title: "Multiple excluded regions.", 100 record: { 101 includeRegions: [], 102 excludeRegions: ["DE", "CA", "US"], 103 }, 104 region: "US", 105 expectedResult: false, 106 }, 107 ]; 108 109 for (let { title, record, expectedResult, region } of TESTS) { 110 info(title); 111 let result = SERPDomainToCategoriesMap.recordMatchesRegion(record, region); 112 Assert.equal(result, expectedResult, "Result should match."); 113 } 114 }); 115 116 add_task(async function find_records_for_region() { 117 const TESTS = [ 118 { 119 title: "Region matches custom region.", 120 record: [ 121 { includeRegions: ["US"], excludeRegions: [], isDefault: false }, 122 { includeRegions: [], excludeRegions: [], isDefault: true }, 123 ], 124 region: "US", 125 expectedResult: { 126 isDefault: false, 127 records: [ 128 { 129 includeRegions: ["US"], 130 excludeRegions: [], 131 isDefault: false, 132 }, 133 ], 134 }, 135 }, 136 { 137 title: "Region matches multiple custom regions.", 138 record: [ 139 { includeRegions: ["US"], excludeRegions: [], isDefault: false }, 140 { includeRegions: ["DE"], excludeRegions: [], isDefault: false }, 141 { includeRegions: [], excludeRegions: [], isDefault: true }, 142 { includeRegions: ["US"], excludeRegions: [], isDefault: false }, 143 ], 144 region: "US", 145 expectedResult: { 146 isDefault: false, 147 records: [ 148 { 149 includeRegions: ["US"], 150 excludeRegions: [], 151 isDefault: false, 152 }, 153 { 154 includeRegions: ["US"], 155 excludeRegions: [], 156 isDefault: false, 157 }, 158 ], 159 }, 160 }, 161 { 162 title: "Region matches default record.", 163 record: [ 164 { includeRegions: ["US"], excludeRegions: [], isDefault: false }, 165 { includeRegions: [], excludeRegions: [], isDefault: true }, 166 ], 167 region: "CA", 168 expectedResult: { 169 isDefault: true, 170 records: [ 171 { 172 includeRegions: [], 173 excludeRegions: [], 174 isDefault: true, 175 }, 176 ], 177 }, 178 }, 179 { 180 title: "Region matches multiple default records.", 181 record: [ 182 { includeRegions: [], excludeRegions: [], isDefault: true }, 183 { includeRegions: ["US"], excludeRegions: [], isDefault: false }, 184 { includeRegions: ["DE"], excludeRegions: [], isDefault: false }, 185 { includeRegions: [], excludeRegions: [], isDefault: true }, 186 ], 187 region: "CA", 188 expectedResult: { 189 isDefault: true, 190 records: [ 191 { 192 includeRegions: [], 193 excludeRegions: [], 194 isDefault: true, 195 }, 196 { 197 includeRegions: [], 198 excludeRegions: [], 199 isDefault: true, 200 }, 201 ], 202 }, 203 }, 204 { 205 title: "Region doesn't match default record.", 206 record: [{ includeRegions: [], excludeRegions: ["CA"], isDefault: true }], 207 region: "CA", 208 expectedResult: null, 209 }, 210 ]; 211 212 for (let { title, record, expectedResult, region } of TESTS) { 213 info(title); 214 let result = SERPDomainToCategoriesMap.findRecordsForRegion(record, region); 215 Assert.deepEqual(result, expectedResult, "Result should match."); 216 } 217 });