Skip to content

Commit

Permalink
add deterministic ordering
Browse files Browse the repository at this point in the history
- updated test to validate new behaviour
  • Loading branch information
dikhan committed Sep 12, 2020
1 parent d28a81d commit db0e6c4
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,16 @@ func (t TerraformProviderDocGenerator) GenerateDocumentation() (TerraformProvide
return TerraformProviderDocumentation{}, err
}

sort.SliceStable(resources, func(i, j int) bool {
return resources[i].Name < resources[j].Name
})
sort.SliceStable(dataSourceInstances, func(i, j int) bool {
return dataSourceInstances[i].Name < dataSourceInstances[j].Name
})
sort.SliceStable(dataSourceFilters, func(i, j int) bool {
return dataSourceFilters[i].Name < dataSourceFilters[j].Name
})

return TerraformProviderDocumentation{
ProviderName: t.ProviderName,
ProviderInstallation: ProviderInstallation{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,20 @@ func TestGenerateDocumentation(t *testing.T) {
},
},
},
&specStubResource{
name: "lb_v1",
shouldIgnore: false,
schemaDefinition: &openapi.SpecSchemaDefinition{
Properties: openapi.SpecSchemaDefinitionProperties{
&openapi.SpecSchemaDefinitionProperty{
Name: "id",
Type: openapi.TypeString,
Required: false,
Computed: true,
},
},
},
},
}
dg := TerraformProviderDocGenerator{
ProviderName: providerName,
Expand Down Expand Up @@ -99,7 +113,8 @@ func TestGenerateDocumentation(t *testing.T) {

// ProviderResources assertions
assert.Equal(t, providerName, d.ProviderResources.ProviderName)
assert.Len(t, d.ProviderResources.Resources, 1)
assert.Len(t, d.ProviderResources.Resources, 2)

cdnResource := d.ProviderResources.Resources[0]
assert.Equal(t, "cdn_v1", cdnResource.Name)
assert.Equal(t, "", cdnResource.Description)
Expand All @@ -108,26 +123,49 @@ func TestGenerateDocumentation(t *testing.T) {
assert.Len(t, cdnResourceProps, 1)
assertProperty(t, cdnResourceProps[0], "id", "string", "", "", false, true, nil)

assert.Equal(t, providerName, d.ProviderResources.ProviderName)
lbResource := d.ProviderResources.Resources[1]
assert.Equal(t, "lb_v1", lbResource.Name)
assert.Equal(t, "", lbResource.Description)
assert.Equal(t, ArgumentsReference{Notes: []string{}}, lbResource.ArgumentsReference)
lbResourceProps := lbResource.Properties
assert.Len(t, lbResourceProps, 1)
assertProperty(t, lbResourceProps[0], "id", "string", "", "", false, true, nil)

// DataSources assertions
assert.Equal(t, providerName, d.DataSources.ProviderName)

// DataSource assertions
assert.Len(t, d.DataSources.DataSources, 1)
// DataSource (filters) assertions
assert.Len(t, d.DataSources.DataSources, 2)
cdnDataSource := d.DataSources.DataSources[0]
assert.Equal(t, "cdn_v1", cdnDataSource.Name)
assert.Equal(t, "", cdnDataSource.OtherExample)
cdnDataSourceProps := cdnDataSource.Properties
assert.Len(t, cdnResourceProps, 1)
assertDataSourceProperty(t, cdnDataSourceProps[0], "id", "string", "", "", nil)

lbDataSource := d.DataSources.DataSources[1]
assert.Equal(t, "lb_v1", lbDataSource.Name)
assert.Equal(t, "", lbDataSource.OtherExample)
lbDataSourceProps := lbDataSource.Properties
assert.Len(t, cdnResourceProps, 1)
assertDataSourceProperty(t, lbDataSourceProps[0], "id", "string", "", "", nil)

// DataSourceInstance assertions
assert.Len(t, d.DataSources.DataSourceInstances, 1)
assert.Len(t, d.DataSources.DataSourceInstances, 2)
cdnDataSourceInstance := d.DataSources.DataSourceInstances[0]
assert.Equal(t, "cdn_v1_instance", cdnDataSourceInstance.Name)
assert.Equal(t, "", cdnDataSourceInstance.OtherExample)
cdnDataSourceInstanceProps := cdnDataSourceInstance.Properties
assert.Len(t, cdnDataSourceInstanceProps, 1)
assertDataSourceProperty(t, cdnDataSourceInstanceProps[0], "id", "string", "", "", nil)

lbDataSourceInstance := d.DataSources.DataSourceInstances[1]
assert.Equal(t, "lb_v1_instance", lbDataSourceInstance.Name)
assert.Equal(t, "", lbDataSourceInstance.OtherExample)
lbDataSourceInstanceProps := lbDataSourceInstance.Properties
assert.Len(t, lbDataSourceInstanceProps, 1)
assertDataSourceProperty(t, lbDataSourceInstanceProps[0], "id", "string", "", "", nil)
}

func assertDataSourceProperty(t *testing.T, actualProp Property, expectedName, expectedType, expectedArrayItemsType, expectedDescription string, expectedSchema []Property) {
Expand Down

0 comments on commit db0e6c4

Please sign in to comment.