func()

in coverage/report.go [24:61]


func (c *CoverageReport) AddCoverageFromState(resourceId, resourceType string, jsonBody map[string]interface{}, swaggerPath string) error {
	apiVersion := strings.Split(resourceType, "@")[1]

	var swaggerModel *SwaggerModel
	if swaggerPath != "" {
		swaggerModelFromLocal, err := GetModelInfoFromLocalDir(resourceId, swaggerPath, "PUT")
		if err != nil {
			logrus.Warnf("error find the path for %s from local dir: %+v", resourceId, err)
		}
		swaggerModel = swaggerModelFromLocal
	}
	if swaggerModel == nil {
		swaggerModelFromIndex, err := GetModelInfoFromIndex(resourceId, apiVersion, "PUT", "")
		if err != nil {
			return fmt.Errorf("error find the path for %s from index: %+v", resourceId, err)
		}
		swaggerModel = swaggerModelFromIndex
	}

	logrus.Infof("matched API path: %s; modelSwawggerPath: %s\n", swaggerModel.ApiPath, swaggerModel.SwaggerPath)

	if _, ok := c.Coverages[swaggerModel.ApiPath]; !ok {
		expanded, err := Expand(swaggerModel.ModelName, swaggerModel.SwaggerPath)
		if err != nil {
			return fmt.Errorf("error expand model %s property: %+v", swaggerModel.ModelName, err)
		}

		c.Coverages[swaggerModel.ApiPath] = &CoverageItem{
			ApiPath:     swaggerModel.ApiPath,
			DisplayName: resourceType,
			Model:       expanded,
		}
	}
	c.Coverages[swaggerModel.ApiPath].Model.MarkCovered(jsonBody)
	c.Coverages[swaggerModel.ApiPath].Model.CountCoverage()

	return nil
}