Here is the integration test I am using ...

        [Test]
        public void CanDeleteItemsFromShoppingCartAndSave()
        {
            EcoShoppingCart cart;
            EcoShoppingCart cartFromDB;
            string uniqueId = Guid.NewGuid().ToString();
            var ecoRepository =
ObjectFactory.GetInstance<IEcoRepository>();

            var catalogRepository =
ObjectFactory.GetInstance<ICatalogRepository>();
            ItmItem item = catalogRepository.GetItem(48046);

            using (new SessionScope())
            {
                cart = ecoRepository.GetCart(uniqueId);

                cart.AddItem(item);
                cart.AddItem(item);

                ecoRepository.SaveCart(cart);
            }
            using (new SessionScope())
            {
                cart = ecoRepository.GetCart(uniqueId);

                cart.DeleteItem(item);

                ecoRepository.SaveCart(cart);
            }

            using (new SessionScope())
            {
                cartFromDB = ecoRepository.GetCart(uniqueId);
                Assert.AreNotSame(cart, cartFromDB);
                Assert.AreEqual(cart.Items.Count, 0);
            }
        }

And here is the unit test:

        [Test]
        public void CanDeleteItem()
        {
            var cart = new
EcoShoppingCart(FakeEntityFactory.subscription, "12345");
            cart.AddItem(FakeEntityFactory.item);
            cart.AddItem(FakeEntityFactory.item);

            cart.DeleteItem(FakeEntityFactory.item);

            Assert.AreEqual(cart.Items.Count, 0);
        }

Thanks so much for sticking thru this with me!

On Oct 29, 2:10 am, "Markus Zywitza" <[EMAIL PROTECTED]> wrote:
> Do you use SessionScope? Did you flush the scope or used another to check
> the results?
>
> What happens if you refresh the Cart? Does the deleted item show up again or
> is it "just" not deleted from the database but not connected to the cart
> anymore?
>
> -Markus
> 2008/10/29 [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>
>
>
> > just grabbed this from the codecampserver trunk ...
>
> > Add Sponsor
>
> >        public virtual void AddSponsor(Sponsor sponsor)
> >        {
> >            _sponsors.Add(sponsor);
> >        }
>
> > Remove Sponsor
>
> >        public virtual void RemoveSponsor(Sponsor sponsor)
> >        {
> >            _sponsors.Remove(sponsor);
> >        }
>
> > Unit Test
>
> >                [Test]
> >                public void ShouldDeleteSponsor()
> >                {
> >                        Conference conf = CreateConference("", "");
> >                        IConferenceRepository repository = new
> > ConferenceRepository(_sessionBuilder);
> >                        Sponsor sponsorToDelete = CreateSponsor("test");
> >                        Sponsor sponsorToKeep = CreateSponsor("test2");
> >                        conf.AddSponsor(sponsorToDelete);
> >                        conf.AddSponsor(sponsorToKeep);
> >                        repository.Save(conf);
> >                        getSession().Dispose();
>
> >                        using (ISession session = getSession())
> >                        {
> >                                var confFromDb =
> > session.Get<Conference>(conf.Id);
> >                                confFromDb.RemoveSponsor(sponsorToDelete);
> >                                repository.Save(confFromDb);
> >                        }
>
> >                        using (ISession session = getSession())
> >                        {
> >                                var confFromDb =
> > session.Get<Conference>(conf.Id);
> >                                var sponsors = new
> > List<Sponsor>(confFromDb.GetSponsors());
>
> >  Assert.That(sponsors.Contains(sponsorToKeep), Is.True);
>
> >  Assert.That(sponsors.Contains(sponsorToDelete), Is.False);
> >                        }
> >                }
>
> > Shows you can do what I'm describing with NHibernate. Not sure why it
> > isn't working with AR.
>
> > On Oct 28, 7:48 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> > > Just as some background, I do have ICartRepo and CartRepo (I've been
> > > oversimplifying everything). The model classes handles the logic
> > > (calculating prices, update quantity, delete item, emptycart, etc.)
> > > and the repo saves things when I'm done.
>
> > > This is where it gets really confusing for me. IMHO the cart should
> > > know what items it has and how to get rid of them (or change their
> > > quantity, or add a new item). Then saving the cart (and its contents)
> > > should be handled by the repository. When I want the cart back, get it
> > > from the repository. The real work happens in the model, not the repo.
>
> > > I don't understand why we want to have the repository managing what it
> > > is in the cart. Doesn't this go against what we've been trying to
> > > accomplish (a model that lives outside its persistence)?
>
> > > On Oct 28, 7:01 pm, "Victor Kornov" <[EMAIL PROTECTED]> wrote:
>
> > > > btw, is there a reason for that other than AR/NH being incapable (or
> > we) to
> > > > do that simpler way (i.e. just detaching it from relevan aggregate
> > root)?
>
> > > > On Wed, Oct 29, 2008 at 1:07 AM, Ken Egozi <[EMAIL PROTECTED]> wrote:
> > > > > create ICartRepository in the domain layer and ARCartRepository in
> > the
> > > > >> persistance layer,
>
> > > > > I second that.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to