Skip to content

Commit d4a039a

Browse files
authored
fix: Use *bool for EnforceFeatureOwners to allow setting false with omitempty (#20)
1 parent b7b3f09 commit d4a039a

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

models.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type Project struct {
1717
FeatureNameRegex string `json:"feature_name_regex,omitempty"`
1818
StaleFlagsLimitDays int64 `json:"stale_flags_limit_days,omitempty"`
1919
EnableRealtimeUpdates bool `json:"enable_realtime_updates,omitempty"`
20-
EnforceFeatureOwners bool `json:"enforce_feature_owners,omitempty"`
20+
EnforceFeatureOwners *bool `json:"enforce_feature_owners,omitempty"`
2121
}
2222

2323
type FeatureMultivariateOption struct {

project_test.go

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ func TestGetProject(t *testing.T) {
3838
assert.Equal(t, ProjectID, project.ID)
3939
assert.Equal(t, ProjectUUID, project.UUID)
4040
assert.Equal(t, "project-1", project.Name)
41-
assert.Equal(t, true, project.EnforceFeatureOwners)
41+
assert.NotNil(t, project.EnforceFeatureOwners)
42+
assert.Equal(t, true, *project.EnforceFeatureOwners)
4243

4344
}
4445

@@ -80,6 +81,38 @@ func TestCreateProjectByUUID(t *testing.T) {
8081
assert.Equal(t, "project-1", project.Name)
8182

8283
}
84+
func TestUpdateProjectEnforceFeatureOwnersFalse(t *testing.T) {
85+
// Given
86+
enforceOwners := false
87+
project := flagsmithapi.Project{
88+
ID: ProjectID,
89+
Name: ProjectName,
90+
Organisation: OrganisationID,
91+
EnforceFeatureOwners: &enforceOwners,
92+
}
93+
94+
server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
95+
rawBody, err := io.ReadAll(req.Body)
96+
assert.NoError(t, err)
97+
98+
// Verify false is present in the payload (not omitted)
99+
assert.Contains(t, string(rawBody), `"enforce_feature_owners":false`)
100+
101+
rw.Header().Set("Content-Type", "application/json")
102+
_, err = io.WriteString(rw, GetProjectResponseJson)
103+
assert.NoError(t, err)
104+
}))
105+
defer server.Close()
106+
107+
client := flagsmithapi.NewClient(MasterAPIKey, server.URL+"/api/v1")
108+
109+
// When
110+
err := client.UpdateProject(&project)
111+
112+
// Then
113+
assert.NoError(t, err)
114+
}
115+
83116
func TestUpdateProject(t *testing.T) {
84117
// Given
85118
project := flagsmithapi.Project{

0 commit comments

Comments
 (0)