tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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