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
-~----------~----~----~----~------~----~------~--~---