Skip to content

Commit

Permalink
feat: make mocks dynamic
Browse files Browse the repository at this point in the history
  • Loading branch information
jpudysz committed Mar 9, 2024
1 parent cc1784b commit f9840f3
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 77 deletions.
73 changes: 13 additions & 60 deletions src/core/mocks/UnistylesMockedBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,66 +4,19 @@ import type { UnistylesThemes, UnistylesBreakpoints } from '../../global'
export class UnistylesMockedBridge {
constructor() {}

public get screenWidth() {
return 400
}

public get screenHeight() {
return 860
}

public get enabledPlugins() {
return []
}

public get hasAdaptiveThemes() {
return true
}

public get themeName() {
return 'default'
}

public get breakpoint() {
return 'sm'
}

public get colorScheme() {
return 'dark'
}

public get contentSizeCategory() {
return 'unspecified'
}

public get sortedBreakpointPairs() {
return [['sm', 320], ['md', 480], ['lg', 640], ['xl', 800]]
}

public get insets() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
}
}

public get statusBar() {
return {
height: 20,
width: 400
}
}

public get navigationBar() {
return {
height: 0,
width: 0
}
}

public set themes(themes: Array<keyof UnistylesThemes>) {}
public screenWidth() {}
public screenHeight() {}
public enabledPlugins() {}
public hasAdaptiveThemes() {}
public themeName() {}
public breakpoint() {}
public colorScheme() {}
public contentSizeCategory() {}
public sortedBreakpointPairs() {}
public insets() {}
public statusBar() {}
public navigationBar() {}
public themes(themes: Array<keyof UnistylesThemes>) {}
public useBreakpoints(breakpoints: UnistylesBreakpoints) {}
public useTheme(name: keyof UnistylesThemes) {}
public updateTheme(name: keyof UnistylesThemes) {}
Expand Down
32 changes: 28 additions & 4 deletions src/core/mocks/UnistylesMockedRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,34 @@ export class UnistylesMockedRegistry {

constructor(private unistylesBridge: UnistylesBridge) {}

public addThemes = (themes: UnistylesThemes) => this
public addBreakpoints = (breakpoints: UnistylesBreakpoints) => this
public addConfig = (config: UnistylesConfig) => this
public getTheme = (forName: keyof UnistylesThemes) => ({} as UnistylesThemes[keyof UnistylesThemes])
public addThemes = (themes: UnistylesThemes) => {
this.themes = themes
this.themeNames = Object.keys(themes) as Array<keyof UnistylesThemes>

return this
}
public addBreakpoints = (breakpoints: UnistylesBreakpoints) => {
this.breakpoints = breakpoints
this.sortedBreakpointPairs = Object
.entries(breakpoints)
.sort((breakpoint1, breakpoint2) => {
const [, value1] = breakpoint1
const [, value2] = breakpoint2

return value1 - value2
}) as Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]>

return this
}
public addConfig = (config: UnistylesConfig) => {}
public getTheme = (forName: keyof UnistylesThemes) => {
if (this.themeNames.length === 0) {
return {} as UnistylesThemes[keyof UnistylesThemes]
}

return this.themes[forName]
}

public addPlugin = (plugin: UnistylesPlugin, notify: boolean = true) => {}
public removePlugin = (plugin: UnistylesPlugin) => {}
public updateTheme = (name: keyof UnistylesThemes, theme: UnistylesThemes[keyof UnistylesThemes]) => {}
Expand Down
53 changes: 40 additions & 13 deletions src/core/mocks/UnistylesMockedRuntime.ts
Original file line number Diff line number Diff line change
@@ -1,56 +1,83 @@
// @ts-nocheck
import { ScreenOrientation } from '../../common'
import type { UnistylesBridge, UnistylesPlugin, UnistylesRegistry } from '../../types'
import type { UnistylesBridge, UnistylesPlugin } from '../../types'
import type { UnistylesThemes } from '../../global'
import type { UnistylesMockedRegistry } from './UnistylesMockedRegistry'
import type { UnistyleRegistry } from '../UnistyleRegistry'

export class UnistylesMockedRuntime {
constructor(private unistylesBridge: UnistylesBridge, private unistylesRegistry: UnistylesRegistry) {}
private unistylesRegistry: UnistylesMockedRegistry

constructor(private unistylesBridge: UnistylesBridge, private unistylesRegistry: UnistyleRegistry) {
this.unistylesRegistry = unistylesRegistry as unknown as UnistylesMockedRegistry
}

public get colorScheme() {
return this.unistylesBridge.colorScheme
return 'dark'
}

public get hasAdaptiveThemes() {
return this.unistylesBridge.hasAdaptiveThemes
return true
}

public get themeName() {
return this.unistylesBridge.themeName
return this.unistylesRegistry.themeNames.length > 0
? this.unistylesRegistry.themeNames.at(0)
: undefined
}

public get contentSizeCategory() {
return this.unistylesBridge.contentSizeCategory
return 'unspecified'
}

public get breakpoint() {
return this.unistylesBridge.breakpoint
if (this.unistylesRegistry.sortedBreakpointPairs.length === 0) {
return undefined
}

const firstBreakpoint = this.unistylesRegistry.sortedBreakpointPairs.at(0)

return firstBreakpoint
? firstBreakpoint.at(0)
: undefined
}

public get breakpoints() {
return this.unistylesRegistry.breakpoints
}

public get enabledPlugins() {
return this.unistylesBridge.enabledPlugins
return this.unistylesRegistry.plugins
}

public get screen() {
return {
width: this.unistylesBridge.screenWidth,
height: this.unistylesBridge.screenHeight
width: 360,
height: 800
}
}

public get insets() {
return this.unistylesBridge.insets
return {
top: 0,
right: 0,
bottom: 0,
left: 0
}
}

public get statusBar() {
return this.unistylesBridge.statusBar
return {
height: 24,
width: 800
}
}

public get navigationBar() {
return this.unistylesBridge.navigationBar
return {
height: 0,
width: 0
}
}

public get orientation() {
Expand Down

0 comments on commit f9840f3

Please sign in to comment.