func (s *uniterLeadershipSuite) TestSettingsChangeNotifier(c *gc.C) {
// First, the unit must be elected leader; otherwise merges will be denied.
leadershipClient := leadership.NewClient(s.clientFacade, s.facadeCaller)
defer func() { err := leadershipClient.Close(); c.Assert(err, gc.IsNil) }()
err := leadershipClient.ClaimLeadership(s.serviceId, s.unitId, 10*time.Second)
c.Assert(err, gc.IsNil)
client := uniter.NewState(s.facadeCaller.RawAPICaller(), names.NewUnitTag(s.unitId))
// Listen for changes
watcher, err := client.LeadershipSettings.WatchLeadershipSettings(s.serviceId)
c.Assert(err, gc.IsNil)
defer statetesting.AssertStop(c, watcher)
wc := statetesting.NewNotifyWatcherC(c, s.BackingState, watcher)
// Initial event.
// wc.AssertChange("foo", "bar")
wc.AssertOneChange()
wc.AssertNoChange()
c.Log("Writing changes...")
err = client.LeadershipSettings.Merge(s.serviceId, map[string]string{"foo": "bar"})
c.Assert(err, gc.IsNil)
c.Log("Waiting to see that watcher saw changes...")
wc.AssertOneChange()
settings, err := client.LeadershipSettings.Read(s.serviceId)
c.Assert(err, gc.IsNil)
c.Check(settings["foo"], gc.Equals, "bar")