---
# System prepended metadata

title: Zipper - Learnings

---

# Zipper - Learnings
## [MR2](https://gitlab.com/evatix-go/zipper/-/merge_requests/2)

- Add ```range``` method in enum to check if within range
- Add ```MarshalJSON(), UnmarshalJSON() , AsJsonMarshaller()``` to enums
- Use msgtype -> ```"gitlab.com/evatix-go/core/msgtype"```
- Struct -> Jsonstring -> ```struct.String()```
- When checking bool return condition directly rather than using if/else block ```return a=b``` rather than ```if a=b {return true} else false```
- No need to stringify if nil 
- If a struct has complex validation check -> use thess methods -> ```IsValid(), IsInvalid(), GetInvalidError()```
- Drop unused requirements from go.mod
- Use ```https://gitlab.com/evatix-go/errorwrapper/-/blob/develop/errdata/errstr/Collection.go#L12``` rather than ```(*errstr.Collection,*errorwrapper.Wrapper)```


<!-- ## Testing Plan
### JSON : 
```json=
{
  "CompressIntegratedTest": {
    "ExpectedData": [""],
    "InputData": [
      {
        "Compress": {
          "PathConfig": {
            "SourcePaths": [
              ""
            ],
            "Destination": {
              "PrefixDir": "",
              "OutputDir": ""
            }
          },
          "Options": {
            "CompressionLevel": 0,
            "Format": ""
          },
          "Overwrite": {
            "IsForceWrite": true,
            "IsSkipOnExistFiles": true
          },
          "RawConfig": {
            "IsContinueOnError": true,
            "IsSelectiveCompression ": true,
            "IsMkdirAll": true,
            "IsImplicitTopLevelFolder": true,
            "StripComponents": 0,
            "IsSingleThreadedCompress": true
          }
        }
      }
    ],
    "PackageName": "",
    "MethodName": "",
    "CaseHeader": ""
  }
}
```

### Wrapper : 
```go=
type CompressTestWrapper struct {
	ExpectedData *[]string    `json:"ExpectedData"`
	InputData    *[]*Compress `json:"InputData"`
	PackageName  string       `json:"PackageName"`
	MethodName   string       `json:"MethodName"`
	CaseHeader   string       `json:"CaseHeader"`
}
```

### Cases : 
```go=
var compressTestCases = CompressTestWrapper{
    ExpectedData: nil,
    PackageName: "zipper",
    MethodName:  "Compress"
    CaseHeader:  "compress integrated test",
    InputData:[]Compress{
        {
        PathConfig : PathConfig{
            SourcePaths : []string{"abc.txt","123.txt"},
            Destination : Destination{
                PrefixDir : "temp",
                OutputDir : "temp.zip",
            },
          },
        },
    },
}

``` -->


## Issue with extraction
![](https://i.imgur.com/O5OOry2.png)

 


