Skip to content

Commit 97a2258

Browse files
committed
Add tests for archived field
1 parent 45eb9d7 commit 97a2258

File tree

2 files changed

+242
-0
lines changed

2 files changed

+242
-0
lines changed

launchdarkly/data_source_launchdarkly_metric_test.go

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,114 @@ func TestAccDataSourceMetric_exists(t *testing.T) {
163163
},
164164
})
165165
}
166+
167+
func TestAccDataSourceMetric_ArchivedField(t *testing.T) {
168+
accTest := os.Getenv("TF_ACC")
169+
if accTest == "" {
170+
t.SkipNow()
171+
}
172+
client, err := newClient(os.Getenv(LAUNCHDARKLY_ACCESS_TOKEN), os.Getenv(LAUNCHDARKLY_API_HOST), false, DEFAULT_HTTP_TIMEOUT_S, DEFAULT_MAX_CONCURRENCY)
173+
require.NoError(t, err)
174+
projectKey := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)
175+
projectBody := ldapi.ProjectPost{
176+
Name: "Terraform Metric Archived Test Project",
177+
Key: projectKey,
178+
}
179+
project, err := testAccProjectScaffoldCreate(client, projectBody)
180+
require.NoError(t, err)
181+
182+
defer func() {
183+
err := testAccProjectScaffoldDelete(client, projectKey)
184+
require.NoError(t, err)
185+
}()
186+
187+
// Create archived metric (without Archived field since API client doesn't support it yet)
188+
archivedMetricKey := "archived-metric"
189+
archivedMetricBody := ldapi.MetricPost{
190+
Name: "Archived Test Metric",
191+
Key: archivedMetricKey,
192+
Description: "Test metric for archived field testing",
193+
Kind: "pageview",
194+
Tags: []string{"test", "archived"},
195+
Urls: []ldapi.MetricUrlPost{
196+
{
197+
Kind: "substring",
198+
Substring: "archived-test",
199+
},
200+
},
201+
}
202+
_, err = testAccDataSourceMetricScaffold(client, nil, project.Key, archivedMetricBody)
203+
require.NoError(t, err)
204+
205+
// Create non-archived metric (without Archived field since API client doesn't support it yet)
206+
nonArchivedMetricKey := "non-archived-metric"
207+
nonArchivedMetricBody := ldapi.MetricPost{
208+
Name: "Non-Archived Test Metric",
209+
Key: nonArchivedMetricKey,
210+
Description: "Test metric for non-archived field testing",
211+
Kind: "pageview",
212+
Tags: []string{"test", "non-archived"},
213+
Urls: []ldapi.MetricUrlPost{
214+
{
215+
Kind: "substring",
216+
Substring: "non-archived-test",
217+
},
218+
},
219+
}
220+
_, err = testAccDataSourceMetricScaffold(client, nil, project.Key, nonArchivedMetricBody)
221+
require.NoError(t, err)
222+
223+
// Test data source configurations
224+
testAccDataSourceMetricArchived := `
225+
data "launchdarkly_metric" "archived" {
226+
key = "%s"
227+
project_key = "%s"
228+
}
229+
`
230+
231+
testAccDataSourceMetricNonArchived := `
232+
data "launchdarkly_metric" "non_archived" {
233+
key = "%s"
234+
project_key = "%s"
235+
}
236+
`
237+
238+
resource.ParallelTest(t, resource.TestCase{
239+
PreCheck: func() {
240+
testAccPreCheck(t)
241+
},
242+
Providers: testAccProviders,
243+
Steps: []resource.TestStep{
244+
// Test reading archived metric (currently returns false since API client doesn't support Archived field yet)
245+
{
246+
Config: fmt.Sprintf(testAccDataSourceMetricArchived, archivedMetricKey, project.Key),
247+
Check: resource.ComposeTestCheckFunc(
248+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", KEY, archivedMetricKey),
249+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", NAME, "Archived Test Metric"),
250+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", PROJECT_KEY, project.Key),
251+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", KIND, "pageview"),
252+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", ARCHIVED, "false"), // Default value until API client supports Archived field
253+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", "tags.0", "test"),
254+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", "tags.1", "archived"),
255+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", "urls.0.kind", "substring"),
256+
resource.TestCheckResourceAttr("data.launchdarkly_metric.archived", "urls.0.substring", "archived-test"),
257+
),
258+
},
259+
// Test reading non-archived metric
260+
{
261+
Config: fmt.Sprintf(testAccDataSourceMetricNonArchived, nonArchivedMetricKey, project.Key),
262+
Check: resource.ComposeTestCheckFunc(
263+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", KEY, nonArchivedMetricKey),
264+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", NAME, "Non-Archived Test Metric"),
265+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", PROJECT_KEY, project.Key),
266+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", KIND, "pageview"),
267+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", ARCHIVED, "false"),
268+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", "tags.0", "test"),
269+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", "tags.1", "non-archived"),
270+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", "urls.0.kind", "substring"),
271+
resource.TestCheckResourceAttr("data.launchdarkly_metric.non_archived", "urls.0.substring", "non-archived-test"),
272+
),
273+
},
274+
},
275+
})
276+
}

launchdarkly/resource_launchdarkly_metric_test.go

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,3 +650,134 @@ func testAccCheckMetricExists(resourceName string) resource.TestCheckFunc {
650650
return nil
651651
}
652652
}
653+
654+
func TestAccMetric_ArchivedField(t *testing.T) {
655+
accTest := os.Getenv("TF_ACC")
656+
if accTest == "" {
657+
t.SkipNow()
658+
}
659+
projectKey := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)
660+
resourceName := "launchdarkly_metric.archived_test"
661+
662+
// Test configuration with archived = true
663+
testAccMetricArchivedTrue := `
664+
resource "launchdarkly_metric" "archived_test" {
665+
project_key = launchdarkly_project.test.key
666+
key = "archived-metric"
667+
name = "Archived Metric"
668+
description = "Test metric for archived field"
669+
kind = "pageview"
670+
archived = true
671+
tags = ["test", "archived"]
672+
urls {
673+
kind = "substring"
674+
substring = "test"
675+
}
676+
}
677+
`
678+
679+
// Test configuration with archived = false
680+
testAccMetricArchivedFalse := `
681+
resource "launchdarkly_metric" "archived_test" {
682+
project_key = launchdarkly_project.test.key
683+
key = "archived-metric"
684+
name = "Archived Metric"
685+
description = "Test metric for archived field"
686+
kind = "pageview"
687+
archived = false
688+
tags = ["test", "archived"]
689+
urls {
690+
kind = "substring"
691+
substring = "test"
692+
}
693+
}
694+
`
695+
696+
// Test configuration without archived field (should default to false)
697+
testAccMetricArchivedDefault := `
698+
resource "launchdarkly_metric" "archived_test" {
699+
project_key = launchdarkly_project.test.key
700+
key = "archived-metric"
701+
name = "Archived Metric"
702+
description = "Test metric for archived field"
703+
kind = "pageview"
704+
tags = ["test", "archived"]
705+
urls {
706+
kind = "substring"
707+
substring = "test"
708+
}
709+
}
710+
`
711+
712+
resource.ParallelTest(t, resource.TestCase{
713+
PreCheck: func() {
714+
testAccPreCheck(t)
715+
},
716+
Providers: testAccProviders,
717+
Steps: []resource.TestStep{
718+
// Step 1: Create metric with archived = true
719+
{
720+
Config: withRandomProject(projectKey, testAccMetricArchivedTrue),
721+
Check: resource.ComposeTestCheckFunc(
722+
testAccCheckProjectExists("launchdarkly_project.test"),
723+
testAccCheckMetricExists(resourceName),
724+
resource.TestCheckResourceAttr(resourceName, KEY, "archived-metric"),
725+
resource.TestCheckResourceAttr(resourceName, NAME, "Archived Metric"),
726+
resource.TestCheckResourceAttr(resourceName, PROJECT_KEY, projectKey),
727+
resource.TestCheckResourceAttr(resourceName, KIND, "pageview"),
728+
resource.TestCheckResourceAttr(resourceName, ARCHIVED, "true"),
729+
resource.TestCheckResourceAttr(resourceName, "tags.0", "test"),
730+
resource.TestCheckResourceAttr(resourceName, "tags.1", "archived"),
731+
),
732+
},
733+
// Step 2: Import state verification for archived = true
734+
{
735+
ResourceName: resourceName,
736+
ImportState: true,
737+
ImportStateVerify: true,
738+
},
739+
// Step 3: Update metric to archived = false
740+
{
741+
Config: withRandomProject(projectKey, testAccMetricArchivedFalse),
742+
Check: resource.ComposeTestCheckFunc(
743+
testAccCheckProjectExists("launchdarkly_project.test"),
744+
testAccCheckMetricExists(resourceName),
745+
resource.TestCheckResourceAttr(resourceName, KEY, "archived-metric"),
746+
resource.TestCheckResourceAttr(resourceName, NAME, "Archived Metric"),
747+
resource.TestCheckResourceAttr(resourceName, PROJECT_KEY, projectKey),
748+
resource.TestCheckResourceAttr(resourceName, KIND, "pageview"),
749+
resource.TestCheckResourceAttr(resourceName, ARCHIVED, "false"),
750+
resource.TestCheckResourceAttr(resourceName, "tags.0", "test"),
751+
resource.TestCheckResourceAttr(resourceName, "tags.1", "archived"),
752+
),
753+
},
754+
// Step 4: Import state verification for archived = false
755+
{
756+
ResourceName: resourceName,
757+
ImportState: true,
758+
ImportStateVerify: true,
759+
},
760+
// Step 5: Remove archived field (should default to false)
761+
{
762+
Config: withRandomProject(projectKey, testAccMetricArchivedDefault),
763+
Check: resource.ComposeTestCheckFunc(
764+
testAccCheckProjectExists("launchdarkly_project.test"),
765+
testAccCheckMetricExists(resourceName),
766+
resource.TestCheckResourceAttr(resourceName, KEY, "archived-metric"),
767+
resource.TestCheckResourceAttr(resourceName, NAME, "Archived Metric"),
768+
resource.TestCheckResourceAttr(resourceName, PROJECT_KEY, projectKey),
769+
resource.TestCheckResourceAttr(resourceName, KIND, "pageview"),
770+
resource.TestCheckResourceAttr(resourceName, ARCHIVED, "false"),
771+
resource.TestCheckResourceAttr(resourceName, "tags.0", "test"),
772+
resource.TestCheckResourceAttr(resourceName, "tags.1", "archived"),
773+
),
774+
},
775+
// Step 6: Import state verification for default archived value
776+
{
777+
ResourceName: resourceName,
778+
ImportState: true,
779+
ImportStateVerify: true,
780+
},
781+
},
782+
})
783+
}

0 commit comments

Comments
 (0)