All files StatsUpdaterFactory.ts

80.3% Statements 53/66
100% Branches 1/1
50% Functions 1/2
80.3% Lines 53/66

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 671x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x                           1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 1x  
import { SettingsJSON } from "../types/settings"
import { SettingsStorage, UiWindow } from "../types/wrapper"
 
import { SettingsManager } from "./SettingsManager"
import { APIHandler } from "./APIHandler"
import { UiUpdater } from "./UiUpdater"
import { UrlObserver } from "./UrlObserver"
import { ChromeSettingsStorage } from "./ChromeSettingsStorage"
import { StatsUpdater } from "./StatsUpdater"
import { StatsCalculator } from "./StatsCalculator"
import { BrowserUiWindow } from "./BrowserUiWindow"
 
import { MockSettingsStorage } from "../../tests/mocks/MockSettingsStorage"
 
import settingsData from "../../settings.json" with { type: "json" }
 
const settingsJSON: SettingsJSON = settingsData as SettingsJSON
 
/**
 * Factory class for creating instances of StatsUpdater with different settings.
 */
export class StatsUpdaterFactory {
  /**
   * Create a new StatsUpdater instance with the specified settings.
   *
   * @param {SettingsStorage} storageManager - The storage manager for settings.
   * @param {UiWindow} uiWindow - The window object for the browser.
   * @returns {StatsUpdater} A new StatsUpdater instance.
   */
  static createStatsUpdater(
    storageManager: SettingsStorage = new ChromeSettingsStorage(),
    uiWindow: UiWindow = new BrowserUiWindow()
  ): StatsUpdater {
    return new StatsUpdater({
      settingsJSON,
      settingsManager: new SettingsManager(storageManager, settingsJSON),
      apiHandler: new APIHandler(settingsJSON),
      uiUpdater: new UiUpdater(settingsJSON, uiWindow),
      statsCalculator: new StatsCalculator(settingsJSON),
      urlObserver: new UrlObserver(uiWindow),
      uiWindow
    })
  }
 
  /**
   * Create a new StatsUpdater instance for testing purposes.
   *
   * @param {SettingsStorage} storageManager - The storage manager for settings.
   * @param {UiWindow} uiWindow - The window object for the browser.
   * @returns {StatsUpdater} A new StatsUpdater instance for testing.
   */
  static createStatsUpdaterForTest(
    storageManager: SettingsStorage = new MockSettingsStorage(),
    uiWindow: UiWindow
  ): StatsUpdater {
    return new StatsUpdater({
      settingsJSON,
      settingsManager: new SettingsManager(storageManager, settingsJSON),
      apiHandler: new APIHandler(settingsJSON),
      uiUpdater: new UiUpdater(settingsJSON, uiWindow),
      statsCalculator: new StatsCalculator(settingsJSON),
      urlObserver: new UrlObserver(uiWindow),
      uiWindow
    })
  }
}