func()

in codegen/module_system.go [1498:1573]


func (g *EndpointGenerator) generateEndpointTestFile(
	e *EndpointSpec, instance *ModuleInstance, out *sync.Map,
) error {
	if len(e.TestFixtures) < 1 { // skip tests if testFixtures is missing
		return nil
	}
	m := e.ModuleSpec
	methodName := e.ThriftMethodName
	serviceName := e.ThriftServiceName

	if len(m.Services) == 0 {
		return nil
	}

	method := findMethod(m, serviceName, methodName)
	if method == nil {
		return errors.Errorf(
			"Could not find thriftServiceName %q + methodName %q in module",
			serviceName, methodName,
		)
	}

	endpointDirectory := filepath.Join(
		g.packageHelper.CodeGenTargetPath(),
		instance.Directory,
	)
	targetPath := e.TargetEndpointTestPath(serviceName, methodName)
	endpointTestFilePath, err := filepath.Rel(endpointDirectory, targetPath)
	if err != nil {
		endpointTestFilePath = targetPath
	}

	meta := &EndpointTestMeta{
		Instance:     instance,
		Method:       method,
		TestFixtures: e.TestFixtures,
		ReqHeaders:   e.ReqHeaders,
		ResHeaders:   e.ResHeaders,
		ClientID:     e.ClientSpec.ClientID,
	}

	relativePath, err := filepath.Rel(
		targetPath, g.packageHelper.CodeGenTargetPath(),
	)
	if err != nil {
		return errors.Wrap(err,
			"Error computing relative path for endpoint test template",
		)
	}

	meta.RelativePathToRoot = relativePath

	tempName := "endpoint_test.tmpl"
	if e.WorkflowType == "tchannelClient" {
		meta.ClientName = e.ClientSpec.ClientName

		meta.IncludedPackages = append(
			method.Downstream.IncludedPackages,
			GoPackageImport{
				AliasName:   method.Downstream.PackageName,
				PackageName: e.ClientSpec.ImportPackagePath,
			},
		)
		tempName = "endpoint_test_tchannel_client.tmpl"
	}

	endpointTest, err := ExecuteDefaultOrCustomTemplate(tempName, g.templates, instance.CustomTemplates,
		instance.Config, meta, g.packageHelper)
	if err != nil {
		return errors.Wrap(err, "Error executing endpoint test template")
	}

	out.Store(endpointTestFilePath, endpointTest)

	return nil
}