Skip to content

Commit

Permalink
Merge pull request #1 from s1hofmann/develop
Browse files Browse the repository at this point in the history
Release v1.2.3
  • Loading branch information
s1hofmann authored Apr 11, 2020
2 parents 8ed3b0b + a273846 commit e434190
Show file tree
Hide file tree
Showing 50 changed files with 109 additions and 51 deletions.
3 changes: 1 addition & 2 deletions .github/workflows/main.yml → .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ name: Bundle & Deploy
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
Expand All @@ -27,6 +25,7 @@ jobs:
node-version: 12.16.1
- run: npm ci
- run: npm run bundle
- run: npm --prefix=packages/zahlenspiel-backend test
- name: ssh deploy
uses: easingthemes/[email protected]
env:
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# This is a basic workflow to help you get started with Actions

name: Test

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/[email protected]
with:
node-version: 12.16.1
- run: npm ci
- run: npm run bundle
- run: npm --prefix=packages/zahlenspiel-backend test
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"packages": [
"packages/*"
],
"version": "1.2.2"
"version": "1.2.3"
}
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "zahlenspiel",
"version": "1.2.2",
"version": "1.2.3",
"description": "Zahlenspiel",
"main": "index.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion packages/zahlenspiel-backend/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {Server} from "colyseus";
import {monitor} from "@colyseus/monitor";
// import socialRoutes from "@colyseus/social/express"

import {ZahlenspielRoom} from "./rooms/zahlenspiel-room";
import {ZahlenspielRoom} from "./src/rooms/zahlenspiel-room";
import {join} from "path";

const port = Number(process.env.PORT || 2567);
Expand Down
12 changes: 3 additions & 9 deletions packages/zahlenspiel-backend/jest.config.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
module.exports = {
collectCoverageFrom: [
"index.ts",
"lib/**/*.ts",
"!lib/**/*.spec.ts",
"!<rootDir>/node_modules/",
],
preset: "ts-jest",
rootDir: "./src",
testEnvironment: "node",
testMatch: process.env.E2E_TEST ?
["**/__tests__/?(e2e)/**/*.[jt]s?(x)", "**/?(*.)?(e2e.)+(spec|test).[jt]s?(x)"] :
["**/__tests__/!(e2e)/**/*.[jt]s?(x)", "**/!(*.e2e.*)+(spec|test).[jt]s?(x)"],
testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ],
testPathIgnorePatterns: [
"/node_modules/",
"/dist/",
],
verbose: true
};
7 changes: 6 additions & 1 deletion packages/zahlenspiel-backend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions packages/zahlenspiel-backend/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{
"name": "zahlenspiel-backend",
"version": "1.2.2",
"version": "1.2.3",
"description": "Zahlenspiel Backend",
"main": "dist/index",
"types": "dist/index",
"scripts": {
"start": "node dist/index.js",
"build:dev": "tsc",
"build": "npm run build:dev && webpack"
"build": "npm run build:dev && webpack",
"test": "jest"
},
"author": "Simon Hofmann <[email protected]>",
"devDependencies": {
Expand All @@ -34,8 +35,9 @@
"cors": "^2.8.5",
"express": "^4.16.4",
"express-jwt": "^5.3.1",
"sneer": "^1.0.1",
"uuid": "^7.0.2",
"winston": "^3.2.1",
"zahlenspiel-shared-entities": "1.2.2"
"zahlenspiel-shared-entities": "1.2.3"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ describe('NextCardValidator', () => {
const SUT = () => ascendingCardIsValid(current, next);

// THEN
expect(SUT).toBeTruthy();
expect(SUT()).toBeTruthy();
});

it('should fail a lower card when ascending', () => {
Expand All @@ -23,7 +23,7 @@ describe('NextCardValidator', () => {
const SUT = () => ascendingCardIsValid(current, next);

// THEN
expect(SUT).toBeFalsy();
expect(SUT()).toBeFalsy();
});

it('should approve a lower card when ascending if it is exactly 10 lower than current', () => {
Expand All @@ -35,7 +35,7 @@ describe('NextCardValidator', () => {
const SUT = () => ascendingCardIsValid(current, next);

// THEN
expect(SUT).toBeTruthy();
expect(SUT()).toBeTruthy();
})
});

Expand All @@ -49,7 +49,7 @@ describe('NextCardValidator', () => {
const SUT = () => descendingCardIsValid(current, next);

// THEN
expect(SUT).toBeTruthy();
expect(SUT()).toBeTruthy();
});

it('should fail a higher card when descending', () => {
Expand All @@ -61,7 +61,7 @@ describe('NextCardValidator', () => {
const SUT = () => descendingCardIsValid(current, next);

// THEN
expect(SUT).toBeFalsy();
expect(SUT()).toBeFalsy();
});

it('should approve a higher card when descending if it is exactly 10 higher than current', () => {
Expand All @@ -73,7 +73,7 @@ describe('NextCardValidator', () => {
const SUT = () => descendingCardIsValid(current, next);

// THEN
expect(SUT).toBeTruthy();
expect(SUT()).toBeTruthy();
})
});
});
25 changes: 25 additions & 0 deletions packages/zahlenspiel-backend/src/states/game-state.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import {Client} from "colyseus";
import {mockPartial} from "sneer";
import {GameState} from "./game-state";
import {Card} from "zahlenspiel-shared-entities";

describe("GameState", () => {
describe("nextPlayer", () => {
it("should skip players with no leftover cards", () => {
// GIVEN
const clientMock = mockPartial<Client>({});
const gameState = new GameState("pw");
["first", "second", "third"].forEach(playerName => gameState.addNewPlayer(clientMock, playerName));
const testCard = new Card(42);
gameState.players[0].cards.push(testCard);
gameState.players[2].cards.push(testCard);
gameState.setCurrentPlayer(gameState.players[0]);

// WHEN
gameState.nextPlayer();

// THEN
expect(gameState.currentPlayer).toEqual(gameState.players[2]);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ export class GameState extends Schema {
nextPlayer() {
const nextPlayerOrdinal = (this.currentPlayer.order + 1) % this.players.length;
this.currentPlayer = this.players.find((player: Player) => player.order === nextPlayerOrdinal);
if (this.currentPlayer.cards.length === 0) {
this.nextPlayer();
}
}

handoutCardsToPlayers() {
Expand Down
2 changes: 1 addition & 1 deletion packages/zahlenspiel-shared-entities/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/zahlenspiel-shared-entities/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "zahlenspiel-shared-entities",
"version": "1.2.2",
"version": "1.2.3",
"description": "Zahlenspiel Shared Entities",
"main": "dist/index",
"types": "dist/index",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,5 @@ export abstract class BaseMessage {
}

export const createTypeGuard = <T>(identifier: MessageType) => {
return (possibleTarget: any) => ("type" in possibleTarget && (possibleTarget as BaseMessage).type === identifier);
return (possibleTarget: any): possibleTarget is T => ("type" in possibleTarget && (possibleTarget as BaseMessage).type === identifier);
};
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Card} from "../entities";

export const isDropCardMessage = createTypeGuard("drop-card");
export const isDropCardMessage = createTypeGuard<DropCardMessage>("drop-card");

export class DropCardMessage extends BaseMessage {
type: MessageType = "drop-card";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isFinishTurnMessage = createTypeGuard("finish-turn");
export const isFinishTurnMessage = createTypeGuard<FinishTurnMessage>("finish-turn");

export class FinishTurnMessage extends BaseMessage {
type: MessageType = "finish-turn";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isGameLostMessage = createTypeGuard("game-lost");
export const isGameLostMessage = createTypeGuard<GameLostMessage>("game-lost");

export class GameLostMessage extends BaseMessage {
type: MessageType = "game-lost";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isGameStartedMessage = createTypeGuard("game-started");
export const isGameStartedMessage = createTypeGuard<GameStartedMessage>("game-started");

export class GameStartedMessage extends BaseMessage {
type: MessageType = "game-started";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isGameWonMessage = createTypeGuard("game-won");
export const isGameWonMessage = createTypeGuard<GameWonMessage>("game-won");

export class GameWonMessage extends BaseMessage {
type: MessageType = "game-won";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isJoinErrorMessage = createTypeGuard("join-error");
export const isJoinErrorMessage = createTypeGuard<JoinErrorMessage>("join-error");

export class JoinErrorMessage extends BaseMessage {
type: MessageType = "join-error";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Player} from "../entities";

export const isJoinSuccessMessage = createTypeGuard("join-success");
export const isJoinSuccessMessage = createTypeGuard<JoinSuccessMessage>("join-success");

export class JoinSuccessMessage extends BaseMessage {
type: MessageType = "join-success";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Card} from "../entities";

export const isMoveCardMessage = createTypeGuard("move-card");
export const isMoveCardMessage = createTypeGuard<MoveCardMessage>("move-card");

export class MoveCardMessage extends BaseMessage {
type : MessageType = "move-card";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {CardStack} from "../entities";

export const isNewCardStackMessage = createTypeGuard("new-card-stack");
export const isNewCardStackMessage = createTypeGuard<NewCardStackMessage>("new-card-stack");

export class NewCardStackMessage extends BaseMessage {
type : MessageType = "new-card-stack";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Card} from "../entities";

export const isNewCardMessage = createTypeGuard("new-card");
export const isNewCardMessage = createTypeGuard<NewCardMessage>("new-card");

export class NewCardMessage extends BaseMessage {
type : MessageType = "new-card";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Player} from "../entities";

export const isPlayerJoinMessage = createTypeGuard("player-join");
export const isPlayerJoinMessage = createTypeGuard<PlayerJoinMessage>("player-join");

export class PlayerJoinMessage extends BaseMessage {
type: MessageType = "player-join";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Player} from "../entities";

export const isPlayerLeaveMessage = createTypeGuard("player-leave");
export const isPlayerLeaveMessage = createTypeGuard<PlayerLeaveMessage>("player-leave");

export class PlayerLeaveMessage extends BaseMessage {
type: MessageType = "player-leave";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";
import {Player} from "../entities";

export const isPlayerSwitchMessage = createTypeGuard("player-switch");
export const isPlayerSwitchMessage = createTypeGuard<PlayerSwitchMessage>("player-switch");

export class PlayerSwitchMessage extends BaseMessage {
type: MessageType = "player-switch";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isSetupFinishedMessage = createTypeGuard("setup-finished");
export const isSetupFinishedMessage = createTypeGuard<SetupFinishedMessage>("setup-finished");

export class SetupFinishedMessage extends BaseMessage {
type: MessageType = "setup-finished";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {BaseMessage, createTypeGuard, MessageType} from "./base-message";

export const isStartGameMessage = createTypeGuard("start-game");
export const isStartGameMessage = createTypeGuard<StartGameMessage>("start-game");

export class StartGameMessage extends BaseMessage {
type: MessageType = "start-game";
Expand Down
Loading

0 comments on commit e434190

Please sign in to comment.