---
# System prepended metadata

title: Test setup
tags: [Smoke, Test, Research, Unit]

---

# Test setup

###### tags: `Research` `Test` `Unit` `Smoke`

## :memo: Links
Starging with reference links fot the task

- [mongoose test guide](https://medium.com/@eminetto/data-migration-with-golang-and-mongodb-d2930e7f3b8ahttps://codeutopia.net/blog/2016/06/10/mongoose-models-and-unit-tests-the-definitive-guide/)
- [mongoose connection test](https://github.com/Automattic/mongoose/issues/2280)
- [socket io test guide](http://47.92.1.61/blog/testing-socket-io-server-nodejs-with-mocha/)
- [express tests](https://alexanderpaterson.com/posts/how-to-start-unit-testing-your-express-apps)

## Testing

single file test
watch mode
coverage report

I choosed the make script, a commom way to use commands, of interpreted or compiled codes.

```
make migrate new description-of-migration
make migrate up
make migrate down
```

Migration is a operation to production and develpment enviroments, but for enviroment is need of specific type of migration, the seeds.

```
make seed new description-of-seed
make seed up
make seed down
```

For use this I have looked into the following link:

- [passing arguments to make run in Stackoverflow](https://stackoverflow.com/questions/2214575/passing-arguments-to-make-run)

## Scripts

### drop collection


```go
	db.C("projects").coll.DropCollection()
```
:::info
 :book: Reference: 
:::

### create collection
```go
	db.Run(bson.D{{Name: "create", Value: "projects"}}, nil)
```
:::info
 :book: Reference: 
:::

### insert data
```go
	db.C("projects").Insert(bson.M{
	    "name": "plando-development",
	    "endDate": "2020-05-30T00:00:00.000+00:00",
	})
```
:::info
 :book: Reference: 
:::

### remove data
```go
    db.C("projects").Remove(bson.M{
        "name": "plando-development",
    })
```
:::info
 :book: Reference: 
:::

`bson.M` is a Map type from bson, the mongodb type model.
## Automation

links:
- [docker compose with command after run](https://github.com/docker/compose/issues/1809)