@@ -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