package jsonpatch_test

import (
	"encoding/json"
	"testing"

	"github.com/AdguardTeam/AdGuardHome/internal/next/jsonpatch"
	"github.com/AdguardTeam/golibs/testutil"
	"github.com/stretchr/testify/assert"
)

func TestNonRemovable(t *testing.T) {
	type T struct {
		Value jsonpatch.NonRemovable[int] `json:"value"`
	}

	var v T

	err := json.Unmarshal([]byte(`{"value":null}`), &v)
	testutil.AssertErrorMsg(t, "property cannot be removed", err)

	err = json.Unmarshal([]byte(`{"value":42}`), &v)
	assert.NoError(t, err)

	var got int
	v.Value.Set(&got)

	assert.Equal(t, 42, got)
}