public void ManyToMany_ShouldNotWorkWhileNotRunning()
        {
            using (new SyncFarmersMarketsFarmerOutlets())
            {
            }

            var farmer1 = new Farmer();
            var market1 = new FarmersMarket();
            farmer1.Outlets.Count.Should().Be(0);
            market1.Vendors.Count.Should().Be(0);

            farmer1.Outlets.Add(market1);
            farmer1.Outlets.Count.Should().Be(1);
            market1.Vendors.Count.Should().Be(0);

            var farmer2 = new Farmer();
            var market2 = new FarmersMarket();
            farmer2.Outlets.Count.Should().Be(0);
            market2.Vendors.Count.Should().Be(0);
            farmer1.Outlets.Count.Should().Be(1);
            market1.Vendors.Count.Should().Be(0);

            market2.Vendors.Add(farmer2);
            farmer2.Outlets.Count.Should().Be(0);
            market2.Vendors.Count.Should().Be(1);
            farmer1.Outlets.Count.Should().Be(1);
            market1.Vendors.Count.Should().Be(0);

            market2.Vendors.Add(farmer1);
            farmer2.Outlets.Count.Should().Be(0);
            market2.Vendors.Count.Should().Be(2);
            farmer1.Outlets.Count.Should().Be(1);
            market1.Vendors.Count.Should().Be(0);
        }
        public void ManyToMany_ShouldWork()
        {
            using (new SyncFarmersMarketsFarmerOutlets())
            {
                var farmer1 = new Farmer();
                var market1 = new FarmersMarket();
                farmer1.Outlets.Count.Should().Be(0);
                market1.Vendors.Count.Should().Be(0);

                farmer1.Outlets.Add(market1);
                farmer1.Outlets.Count.Should().Be(1);
                market1.Vendors.Count.Should().Be(1);

                var farmer2 = new Farmer();
                var market2 = new FarmersMarket();
                farmer2.Outlets.Count.Should().Be(0);
                market2.Vendors.Count.Should().Be(0);
                farmer1.Outlets.Count.Should().Be(1);
                market1.Vendors.Count.Should().Be(1);

                market2.Vendors.Add(farmer2);
                farmer2.Outlets.Count.Should().Be(1);
                market2.Vendors.Count.Should().Be(1);
                farmer1.Outlets.Count.Should().Be(1);
                market1.Vendors.Count.Should().Be(1);

                market2.Vendors.Add(farmer1);
                farmer2.Outlets.Count.Should().Be(1);
                market2.Vendors.Count.Should().Be(2);
                farmer1.Outlets.Count.Should().Be(2);
                market1.Vendors.Count.Should().Be(1);

                market2.Vendors.Remove(farmer1);
                farmer2.Outlets.Count.Should().Be(1);
                market2.Vendors.Count.Should().Be(1);
                farmer1.Outlets.Count.Should().Be(1);
                market1.Vendors.Count.Should().Be(1);

                farmer2.Outlets.Remove(market2);
                farmer2.Outlets.Count.Should().Be(0);
                market2.Vendors.Count.Should().Be(0);
                farmer1.Outlets.Count.Should().Be(1);
                market1.Vendors.Count.Should().Be(1);
            }
        }