Skip to content

Commit

Permalink
Add CI tests (#4)
Browse files Browse the repository at this point in the history
This PR adds CI
  • Loading branch information
j-piasecki authored Sep 4, 2022
1 parent 5944494 commit f9c255d
Show file tree
Hide file tree
Showing 9 changed files with 3,264 additions and 1 deletion.
37 changes: 37 additions & 0 deletions .github/workflows/run-core-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Test core
on:
pull_request:
paths:
- '.github/workflows/run-core-tests.yml'
- '@zapp/core/**'
push:
branches:
- main

jobs:
check:
runs-on: ubuntu-latest
concurrency:
group: test-core-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'

- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

- name: Install packages
run: yarn install --frozen-lockfile

- name: Run tests
working-directory: ./@zapp/core
run: yarn test
146 changes: 146 additions & 0 deletions @zapp/core/src/__tests__/ColumnLayout.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
import { WorkingTree } from '../working_tree/WorkingTree'
import { Stack } from '../working_tree/views/Stack'
import { ColumnConfig } from '../working_tree/props/ColumnConfig'
import { Alignment, Arrangement } from '../working_tree/props/types'
import { Config } from '../working_tree/props/Config'
import { Renderer } from '../renderer/Renderer'
import { DummyViewManager } from '../renderer/DummyViewManager'
import { Column } from '../working_tree/views/Column'

jest.useFakeTimers()
Renderer.setViewManager(new DummyViewManager())

function getRenderedTreeString() {
return JSON.stringify(Renderer.getCurrentTree(), undefined, 2)
}

afterEach(() => {
WorkingTree.dropAll()
jest.setSystemTime(0)
})

test('Children of Column(alignment=Start) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).alignment(Alignment.Start).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(alignment=Center) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).alignment(Alignment.Center).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(alignment=End) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).alignment(Alignment.End).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=Start) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.Start).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=Center) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.Center).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=End) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.End).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=SpaceBetween) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.SpaceBetween).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=SpaceAround) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.SpaceAround).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Column(arrangement=SpaceEvenly) get positioned correctly', () => {
Column(ColumnConfig('column').width(400).height(400).arrangement(Arrangement.SpaceEvenly).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})
146 changes: 146 additions & 0 deletions @zapp/core/src/__tests__/RowLayout.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
import { WorkingTree } from '../working_tree/WorkingTree'
import { Stack } from '../working_tree/views/Stack'
import { RowConfig } from '../working_tree/props/RowConfig'
import { Alignment, Arrangement } from '../working_tree/props/types'
import { Config } from '../working_tree/props/Config'
import { Renderer } from '../renderer/Renderer'
import { DummyViewManager } from '../renderer/DummyViewManager'
import { Row } from '../working_tree/views/Row'

jest.useFakeTimers()
Renderer.setViewManager(new DummyViewManager())

function getRenderedTreeString() {
return JSON.stringify(Renderer.getCurrentTree(), undefined, 2)
}

afterEach(() => {
WorkingTree.dropAll()
jest.setSystemTime(0)
})

test('Children of Row(alignment=Start) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).alignment(Alignment.Start).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(alignment=Center) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).alignment(Alignment.Center).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(alignment=End) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).alignment(Alignment.End).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=Start) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.Start).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=Center) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.Center).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=End) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.End).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=SpaceBetween) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.SpaceBetween).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=SpaceAround) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.SpaceAround).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})

test('Children of Row(arrangement=SpaceEvenly) get positioned correctly', () => {
Row(RowConfig('row').width(400).height(400).arrangement(Arrangement.SpaceEvenly).padding(10), () => {
Stack(Config('inner.1').width(50).height(50))
Stack(Config('inner.2').width(80).height(80))
Stack(Config('inner.3').width(100).height(100))
})

WorkingTree.performUpdate()
Renderer.commit(WorkingTree.root)
Renderer.render()

expect(getRenderedTreeString()).toMatchSnapshot()
})
Loading

0 comments on commit f9c255d

Please sign in to comment.