New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tsarch

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tsarch

An architecture unit test framework for Typescript

  • 5.1.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
12K
increased by3.43%
Maintainers
1
Weekly downloads
 
Created
Source

TSArch

An architecture unit test framework for Typescript

Build status

Travis

Installation

npm install --save-dev tsarch

Usage

The project has currently two perspectives on architecture: file based architecture tests and slice based architecture tests.

File API

// imports and applies the jest extensions
import "tsarch/dist/jest"

// imports the files entrypoint
import {filesOfProject} from "tsarch"

describe("architecture", ()=> {

    // architecture tests can take a while to finish
    jest.setTimeout(60000);

    // we use async await in combination with jest since this project uses asynchronous calls
    it("business logic should not depend on the ui", async ()=> {
        const rule = filesOfProject()
            .inFolder("business")
            .shouldNot()
            .dependOnFiles()
            .inFolder("ui")

        await expect(rule).toPassAsync()
    })

    it("business logic should be cycle free", async ()=> {
        const rule = filesOfProject()
            .inFolder("business")
            .should()
            .beFreeOfCycles()

        await expect(rule).toPassAsync()
    })
})

An example without jest and further examples of the usage can be found in the integration tests in test/files/integration.

Slices API

Assume that you have an architecture diagram (Plant Uml) as part of your documentation in the docs folder of your project.

import "tsarch/dist/jest"
import {slicesOfProject} from "tsarch" 
import * as path from "path"

describe("architecture", ()=> {
    jest.setTimeout(60000);

    it('the architecture adheres to the config', async () => {
    	const diagramLocation = path.resolve('docs', 'components.puml');
    
    	const rule = await slicesOfProject()
    		.definedBy('src/(**)/')
    		.should()
    		.adhereToDiagramInFile(diagramLocation)
    
    	await expect(rule).toPassAsync()
    });
})

An example without jest and further examples of the usage can be found in the integration tests in test/slices/integration.

Path handling

The path of the project is always relative to a given tsconfig.json. If no tsconfig.json is given ts-arch tries to find one in a parent folder, e.g. if your tsconfig.json is in the same folder as your src folder, then all the paths begin with src/...

FAQs

Package last updated on 26 Oct 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc