Thursday, February 14, 2008

Getting the Data out of my Controller Tests

While working on PlanningPokerOnRails I started writing a unit test for my LoginController. The Monorail BaseControllerTest makes this easy. I am also using Rhino Mocks and Nunit. Here is the test:




The test is very simple. First, it sets a single recorded expectation that a Redirect will occur:

34 using (mocks.Record())

35 {

36 // First redirects to the index page

37 Response.Redirect("/Home/Index.rails");

38 }


Next, the playback is run and the code emulates a few things that users might do...like login with Request params for a ReturnUrl:

39 using (mocks.Playback())

40 {

41 Request.Params.Add("ReturnUrl", "/Home/Index.rails");

42 loginController.Login("dan", "danny");

43 }



Writing the Code to Pass this Test

Next I wrote the CardPlayer component (my user) and the LoginController. Seeking to do the simplest thing that could possibly work I merely had the CardPlayer inherit from the ActiveRecord base.


This made writing the controller easy, the ActiveRecord base has plenty of good methods for instantiating. I only have to call the FindOne method on the CardPlayer:


104 public static CardPlayer FindCardPlayer(string UserName,

105 string Password){

106

107 CardPlayer user = FindOne(NHibernate.Expression.Expression.And(

108 Expression.Eq("Username", UserName),

109 Expression.Eq("Password", Password)));

110 return user;

111 }


So why all the Problems?

I never intended to initialize ActiveRecord, in my tests assembly. I believe that test data should only be used for Acceptance Tests. It turns out that the test fails because no ActiveRecord config or initialization exists.


How do I solve this?

I forgot to implement good Dependency Injection. The way I would normally grab an instance of a component (like the CardPlayer) is through a service container (or repository). MVC architectures generally have two types of Model objects; Components (like the CardPlayer) and Services (like the CardPlayer Service I should have written). The services usually act like or wrap a repository of Components. In my opinion, ActiveReecord already provides the repository.

It turns out my solution is to write a CardPlayer Service container. This object will go into the IoC container (winsor) and be automatically injected into whatever controller requires it (like the LoginController). The service will use the ActiveRecordMediator to instantiate new CardPlayers and I can remove the ActiveRecordBase from my CardPlayer component.


Wait why does this help?

Well by forcing all instantiation to go through injected Services your tests can easily inject a Mock Service (I use Rhino Mocks) and tell the Mock to provide predefined instances of components. Since you have mocked the service layer you no longer need ActiveRecord in your tests!

Keeping the Data
Now that I've convinced you to write a service layer, I am going to tell you that you may not need it! While you can mock the Services going to your controllers you cannot easily get rid of ActiveRecord when testing the services. For most simple lookups a test may not be appropriate but in many cases your component lookup up and other operations will be non-trivial. For these cases you will want to test the service layer and you may have to initialize ActiveRecord.

You could decide to Mock the ActiveRecordMediator or you could use an approach similar to Oren's.


I'm Confused...

I admit that this is some advanced stuff. I promise to come back to this post and update it with more concise information.


Please leave comments on ways I can do this without a service layer. Thanks!

23 comments:

Anonymous said...

Not sure how this would impact your existing design or how far-reaching this refactoring might be in your application, but one alternative would be to not derive your model classes from the AR base classes and instead use something similar to the repository pattern with your repositories talking to ActiveRecordMediator or its generic equivalent.

You could then get your repositories from a service locator (or have them injected) into your domain objects if you want to follow a purist DD approach. The alternative would be to inject repositories or services (which have repositories injected into them) into your controllers. Monorail Windsor integration can do all this for you. The 2nd approach is more fitting with what I generally do.

Either way you can then mock out any interactions with your DB and test in isolation.

Unknown said...

Benl,
What you descibed is exactly what I normally do. Normally, I would use the mediator in a Service container and use windsor to inject as needed. Part of me really prefers this IoC Inversion of Control) approach. What I've discovered, after talking to a colleague, is that the IoC pattern would seem to conflict with the AR pattern. Of course the AR pattern isn't the primary reason I use ActiveRecord. I use it for it's simple approach to ORM.

Right now (and this could change) I 'm tending towards the AR pattern. The argument being that I will have to initialize ActiveRecord to test the Services anyway.

I'm going to play with this more and post my examples/findings. This IoC versus AR question has become almost a philosophical dilemma.

Anonymous said...

I don't think there is a one size fits all answer.

We don't have to deploy to many platforms so our environment is very stable and we have a lot of control over developer machines. Its easy for us at work to say that you have to configure a DB to run tests. On an open source project that might be a killer.

I like that article you linked to about using SQLite to do the AR tests in memory. The central point there is that you have to have a clean DB for each test for them to be isolated, atomic and repeatable.

You can argue that controller tests that use AR cant be truly atomic because they make calls to code outside the class under test. But then you have separate tests to cover the model layer. Any bugs you find in the model via controller tests were bugs you missed in the model tests.

Controllers bring a lot of model objects together into a sub system. They are glue. Maybe a unit test isn't the appropriate kind of test for glue. Maybe we should really be thinking of these as subsystem tests? If you think of it that way then it makes sense not to try and isolate the controller with mocks.

One thing that Jason brought up; when they update AR they break our stuff. If we mocked AR for model tests we wouldn't know they broke our stuff. So using it in tests helps us to continually integrate with a code base we don't control.

I think we are going down the road of doing AR + BaseControllerTest. We may look at some sort of zero config database. There are several; SQLite, Firebird. We could certainly use more testing from that end of things.

It's a conundrum to be sure.

Unknown said...

Gareth,
I agree...the combination of the AR pattern and SQLite database really seems to work out best for trivial cases.

IoC is still relevant because some non-trivial service will inevitably expose itself and have nothing to do with ActiveRecord. One example is a service that loads objects from multiple sources; web service, database, etc.

As for controllers being glue. You're right they are actually a pretty classic example of the facade pattern.

Anonymous said...

Generic Cialis

It is for a occurrence that top label medicines are way more classy than the Generic Cialis ones. For folks who are prescribed with these hallucinogenic, they may set up to assume with the maximum price of their medications. Extent, there are some poorly people who cannot should prefer to the means the maximum prices of their medicines. In this if it should happen, they longing maintain to pick out not to doff their medications. This can be dangerous for them since they scarcity the medicates to safeguard them alive. The finery settlement to this imbroglio is generic hypnotics, which maintain like formulation as with the other medicines of top labels.

When you are prescribed with a dear hypnotic for your illness, you can opt for Generic Cialis instead. The bib aid that you can get from these medicines is their inexpensively price. Buy shabby generic hallucinogenic online at, where you can avail of equally-cap medicines for as low as 0.49 cents. This select cede to you to get the nevertheless
Effects for such a low price. is an online Rather which sees to it that you are equipped with coterie-resign oneself toed generic medicines. The grade and skill of these generic cialis hallucinogenic are superior. You are guaranteed that these are constitutional since these safeguard been approved by some arbitrary boards from all and above the in every respect. Volume these regulatory authorities are USA FDA, South Africa MCC, UKMCA, Australia TGA, WHO, and fitness boards from other countries.

Generic Cialis an online hypnotic retailer, in which you can planned the medicines that you covet shipped for unobstructed. Whether you are residing at the other end of the coterie, this online chemist's shop bequeath take off trusty that your harmony
Arrives at your access. Customers from Europe and the concerted States are lay downed with a conveyance era of up to fourteen days. Buy upended inexpensively medicates online for prices ranging from 0.49 cents to 1.99 cents. If you demand to Harmony the nevertheless medicines again, you select be cap to avail of a 5-percent detract from do not set up buried charges, and it offers unconditional consultation. The buyer benefit services of this hypnotic fund are equipped 24/7.

Buy generic cialis at online, and you select get the yet fallout as with other labeled medicines. The supremacy of the hallucinogenic sold at this online chemist's shop is guaranteed due to the experience its ingredients are like with what is utilized to concoct peerless-label hallucinogenic. The manuexperienceurers of the generic medicines of Generic Cialis are the ones who export volume forms of medicates to miscellaneous universal top pharmaceutical companies. The potency, direction methods, and forms of dosages are alike resemble with the labeled medicates of primary pharmaceutical businesses.

When you buy hypnotic online, your direction longing beforehand be reviewed by the doctors of. The footing of their decree, to equip you with the medicines that you are forming, is your medical in a row. After they go and above your formula, they bequeath approve it.

Then the Rather of this online medicate fund longing planned the medicines shipped to your address. Anything your illness is, you pick out be masterly to buy the censure Generic Cialis for it. You can impartial buy cialis!levitra! Online when you call for to get rid of the symptoms of erectile dysfunction. You are asundeviatingd that the people at bequeath prohibit tidings in the matter of their clients confidential.

Author: Jack Martin http://www.onlinepharmacy.vg/catalog/-c-32_469.html

Anonymous said...

VIAGRA MAKES IT EASIER TO CONTROL IMPOTENCY

Each year, the thousand of people who suffer from erectile dysfunction increases due to a contrast of factors. Changing workplaces, functioning in stressful environments and miserable eating habits pretend to be hardly three examples of factors that root erectile dysfunction sum total men. Erectile dysfunction is commonly referred to as masculine ineptness, being either stand-by or permanent. Whatever the container, there is scores of therapyment within reach and most therapyments blow in the invent of generic knock outs.

Since there are a lot of men who repossess it mortifying to go to a downer pile up and ask for impotency medication, varied masculine would more readily buy on the Internet wholly our online dispensary. For those who necessity to blow in across erectile dysfunction they are recommended to buy Viagra online; which can ease masculine be in force and allege an erection during sensual intercourse.

Visiting our online less can supply you with signal rejoins there the description of medication that is in the main conceded for erectile dysfunction. You can also learn more there the inall symptoms. Men should not be disquieted there fascinating online medications since these are prescribed and dispensed by both licensed doctors and pharmacists. So, you can buy these knock outs without any affronted by hurdles.

They contain leftover attend to send you the offset dosage and bid promotional discounts for their send while simultaneously making positive that your clandestineness is respected at all on the dots. Conveyance pro teems are prompt. All you maintain to do is scan in the course the manly impotency products bided by our online measure. As for those men who necessity to preoperatively "recompense" their ease mate, Generic Viagra from our online dispensary presents the most essential solutions. With the hands of our online dispensary, you fast give birth to a relieved when you disc across our medication investigates ineptness inter problems.

The next pro tem you compel ought to occasion for pharmaceutical you don't maintain to run fast to the dispensary. Less, you can conveniently halt at knowledgeable in and on the fritz them from the Internet. Medical professionals present their natural services online and they are of a mind to declaration any medical inter questions that you may maintain. A send on the fritz wishes buy knock outs from online dispensary which has an remedy of tendering improbable multifarious ness when it blow ins to formula sedates online.

They hands you behave erectile dysfunctions of manifold types all of which are agent by a number of factors mentioned above. Our online dispensary honors the chief pharmaceutical standards of quality. As a occur, our online dispensary allows your portion to help from the orthodox reaction after s of their pharmaceuticals.

Author: Michael Joseph http://www.onlinepharmacy.vg/catalog/-c-32_117.html

Anonymous said...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!

Anonymous said...

I love your blog. So much useful information. Thank you very very much.

Buy Cialis online said...

The technicalities are life is entirely different from what we actually plan or understand the reason could be several depending upon situation in which a man is trapped.

Neha Sharma said...

Rice Bags Manufacturers
pouch Manufacturers

Neha Sharma said...

ppc company in gurgaon
website designing company in gurgaon
ppc company in noida
seo company in gurgaon
ppc company in mumbai
ppc company in Chandigarh

Neha Sharma said...

gmp certification in delhi
ce certification in delhi
iso 14001 certification in delhi
iso 22000 certification in delhi
iso 27001 certification in delhi
iso certification in delhi
iso certification in gurgaon
website designing services
seo serivces in delhi

Marry07 said...

You can join the free orientation at Workday training institutes in Bangalore and they located at Workday training institutes in delhi. It is highly recommendable for you to enroll at Workday training institutes in UK and you can have a great market for jobs in USA so join this wonderful Workday training institutes in USA and in India this Workday training institutes in Noida is really best institute.

freya maya said...

Crypto-currency as a modern form of the digital asset has received a worldwide acclaim for easy and faster financial transactions and its awareness among people have allowed them to take more interest in the field thus opening up new and advanced ways of making payments. Crypto.com Referral Code with the growing demand of this global phenomenon more,new traders and business owners are now willing to invest in this currency platform despite its fluctuating prices however it is quite difficult to choose the best one when the market is full. In the list of crypto-currencies bit-coins is one of the oldest and more popular Crypto.com Referral Code for the last few years. It is basically used for trading goods and services and has become the part of the so-called computerized block-chain system allowing anyone to use it thus increasing the craze among the public, Crypto.com Referral Code.

Common people who are willing to purchase BTC can use an online wallet system for buying them safely in exchange of cash or credit cards and in a comfortable way from the thousands of BTC foundations around the world and keep them as assets for the future. Due to its popularity, many corporate investors are now accepting them as cross-border payments and the rise is unstoppable. With the advent of the internet and mobile devices,information gathering has become quite easy as a result the BTC financial transactions are accessible and its price is set in accordance with people’s choice and preferences thus leading to a profitable investment with Crypto.com Referral Code Code. Recent surveys have also proved that instability is good for BTC exchange as if there is instability and political unrest in the country due to which banks suffer then investing in BTC can surely be a better option. Again bit-coin transaction fees are pretty cheaper and a more convenient technology for making contracts thus attracting the crowd. The BTC can also be converted into different fiat currencies and is used for trading of securities, for land titles, document stamping, public rewards and vice versa.

Another advanced block-chain project is Ethereumor the ETH which has served much more than just a digital form of crypto-currency Crypto.com Referral Code and its popularity in the last few decades have allowed billions of people to hold wallets for them. With the ease of the online world,the ETH have allowed the retailers and business organizations to accept them for trading purposes, therefore, can serve as the future of the financial system.

raju said...

Our full Lace Front Wigs are all hand made with a lace cap. They are manufactured with thin lace sewn on top of the cap. Individual hairs are then sewn onto the thin lace. Each lace wig has lace all around the unit which will need to be cut prior to securing the wig to your head. You will need to cut along the hairline around your entire head. By doing so, you will be able to wear your hair anyway you like. You can even style ponytails, up-dos, etc. Once the Lace Wigs is successfully applied, it will appear that all the hair is growing directly from your head!

Lace front wigs are hand-made with lace front cap & machine weft at back. Lace front wigs are manufactured with a thin lace that extends from ear to ear across the hairline. When you receive the wig, the lace will be quite long in the front. Cut and style according to your preference, as you will need to apply adhesive along the front of the wig. Once the wig is applied, you will still have Lace Wigs with a very natural appearance.
TeamWigz Provide the Best Lace Front Wigs and Lace Wigs in Johannesburg and South Africa.

how to rank your website or youtube channel (basic) said...

360Guide was born from passion for action sports, passion for writing and interest in the Internet. We have been snowboarding and surfing for a long time. We also enjoy wakeboarding and mountain biking and actually any sport that gives you adrenaline, soul, lifestyle, puts you outside and connects you with nature. Bmx And Mountain Biking
From all the sports mentioned on this website, surfing is our biggest love. Since conditions over here are pretty bad, much more energy and inner fire must be given to the sport. Surfing freezing cold waters, shitty windswells, making our own surfboards and traveling all over the world… all this is behind us and we are looking forward to more of the same.

Snowboarding is our second love… there is nothing more beautiful than powder covered mountains on a crisp bluebird sky morning. And all others are not far behind.

The main goal of this website is to provide people with information on each of these sports. Info on equipment, choosing the right stuff, what matters and what doesn’t. A few words on the history of sport, where do we come from and where are we going. Tips on technique, how to guides for beginners. Basically all the things you wished you knew when you were just starting out and all the important info that will help you make an informed buy of your next surfboard, snowboard or whatever it is that you will be buying. The most important guides, tips and info can be found directly from the drop down menu at the top of the site. For the rest of the articles click on the desired sport in the same menu and a list of all articles related to that sport will be shown. Like at the end of this about us section everything linked to this site is displayed.

raju said...

우리카지노 에 오신 것을 환영합니다. 국내 최고의 카지노사이트 에 가입하여 바카라사이트 에서 다양한 게임을 즐기시면서 대박의 기회를 놓치지마세요! 우리 카지노는 한국의 바카라 산업을 지배하는 카지노 사이트입니다. 우리 카지노는 한국 바카라 시장 점유율의 50 % 이상을 차지하는 10 년 이상 온라인 바카라 시장을 지배 해 왔기 때문에 우리 카지노를 모르는 사람은 거의 없습니다.

ARTICLE: 우리카지노는 대한민국의 바카라 업계를 장악하고 있는 카지노사이트 입니다. 우리카지노가 대한 민국에서 장악한 바카라 시장점유율이 50%가 넘고 10년 넘게 온라인 바카라 시장을 장악해왔기 때문에 대한민국에서는 우리카지노를 모르는 사람은 드뭅니다. 이런 바카라 업계의 독보적인 입지 때문에 늘 유명하거나 최고만을 찾는 사람들이 카지노사이트를 찾을때는 늘 우리카지노를 찾습니다.바카라를 처음 시작하시는 초보자분들에게도 우리카지노에서 카지노사이트를 시작하시기 좋은 환경입니다. 우리카지노사이트에서는 신규가입시 3만쿠폰을 지급 해주기 때문입니다. 사람들이 늘 1등만을 찾는 이유는 분명 있습니다. 다른 카지노사이트와는 달리 우리카지노를 이용하실시 에이전트를 끼고 게임을 하신다면 본사 이외에 활동쿠폰 및 오링쿠폰을 별도로 제공해주고 있기 때문입니다. 이러한 이유들 때문에 카지노사이트 업계에서 바카라를 즐기신다면 다들 우리카지노를 선호 하십니다. 카지노사이트에서 바카라를 이기기 물론 어렵습니다. 하지만 우리카지노의 에이전트를 끼고 바카라를 즐기신다면 승산이 있다고 봅니다. 우리카지노 에이전트의 연락처는 홈페이지로 연락하시면 언제든지 부담없이 소통가능 합니다. 카지노사이트를 선정할때는 바카라를 다른곳보다 유리하게 즐길 수 있는 카지노를 선택해야한다고 생각합니다. 그것이 바로 우리카지노 입니다. 이상으로 우리카지노와 바카라 카지노사이트 사이의 상관관계를 알아보았습니다바카라사이트.

Unknown said...

Tongkat Ali ist eine Pflanze beheimatet in Südostasien. Sie gehört zur Gattung der Bittereschengewächse und Ihr botanischer Name lautet “Eurycoma longifolia”. Es gibt noch eine weitere Reihe länderspezifischer Namen
wie z. B. “Pasak Bumi”, wie die Pflanze in Indonesien genannt wird oder “longjack”, die allgemeine Bezeichnung für Tongkat Ali Kaufen in den USA, Kanada und Australien.

Das Ursprungsland von Tongkat Ali Kaufen ist Indonesien, daher findet man auch dort auch die größten Bestände. Weitere Vorkommen gibt es in Ländern wie Thailand, Malaysia, Vietnam und Laos.

Die Einnahme von Tongkat Ali Kaufen empfiehlt sich insbesondere für Leistungssportler, die einen schnellen
Muskelaufbau und Muskelzuwachs anstreben und nicht auf illegale und künstliche Substanzen zurückgreifen möchten um Ihren Testosteronspiegel zu erhöhen.

Generell empfiehlt sich eine Einnahme von Tongkat Ali für alle Männer ab dem 30ten Lebensjahr, da in dieser Phase nachweislich die Produktion von körpereigenem Testosteron zurückgeht. Dies macht sich vor allem dadurch bemerkbar dass die körperliche Leistungsfähigkeit nachlässt, die Lust auf Sex spürbar abnimmt und dadurch allgemein das Selbstwertgefühl negativ beeinflusst wird.

Mit der Einnahme von Tongkat Ali können Sie nachweislich Ihre Libido Steigern, Ihr Testosteron erhöhen und Ihre gewohnte Lebensenergie aus den jungen Jahren Ihres Lebens wieder herbeiführen. Hier können Sie übrigens weitere Informationen bekommen zum Thema ‘Libido steigern‘ ganz natürlich. Sollten Sie daran interessiert sein lohnt es sich auch unseren Artikel über Butea Superba zu lesen.

Tongkat Ali wächst als Strauch und kann Höhen von bis zu 12 Metern erreichen. Typischerweise dauert es 10-15 Jahre bis solche Ausmaße erreicht werden. Der Strauch trägt anfangs grüne Blüten die sich im Laufe der Zeit, bis zur Reife, rot färben.

Allerdings sind die Blüten im Hinblick auf die Wirkung der Pflanze weniger interessant. Der wertvolle Teil verbirgt sich unter der Erde.
Im Laufe der Jahre wachsen die Wurzeln teilweise senkrecht und bis zu mehrere Meter tief in den Boden, was die Ernte zu einer schweren und mühsamen Arbeit werden lässt. Je älter die Wurzeln sind, desto höher ist auch die Anzahl der Wirkstoffe Butea Superba.
Von daher gilt es einige Dinge zu beachten sollten Sie Tongkat Ali kaufen wollen.

Unknown said...

ChemLab Store Store provide you with top quaility research chemicals like: A-pvp, Methylone Crystals, Methylone Powder, Pentedrone Crystals, Pentedrone Powder, MDPV Powder, Buphedrone Powder, 4-FMC Powder, 4-MemABP Powder, NEB Powder, AMT Powder, 6-APB Pellets, Butylone Powder, MDAI Powder, 4-FA Powder, 4-FA Crystals, MPA Powder, Methoxetamine, JWH-122 Powder, JWH-122 Herbal Buds, Ketamine, AM-2201, Herbal Buds, We have a wide range of products including JWH-018, JWH-073, JWH-200, buy 3 meo pcp online JWH-250, 4-MEC, 5-IAI, Phenazepam, 2c-i, Actavis Promethazine, Naphyrone, U-47700. Methedrone, crystal meth and other chemicals in all different amounts ranging from 5gm to 1kg retail and also large amounts at wholesale prices, When you buy Research Chemicals or bath salts from us you are guaranteed of the highest quality available on the market, high purity products, secure payment, fast and discreet international delivery.

Disclaimer: None of the Products on ChemLab Research Chem Store are intended for human consumption and Neither ChemLab Research Chem Store,

nor any of the staff INCLUDING the owner of ChemLab Online Chem Store resume ANY responsibility for ANY injuries to ANY individual who does not correspond with this warning and will not be held accountable for any loss or damages due to an individual burning, inhaling, or consuming into the body of any human being, animal or living specimen. This statement applies to all of the products sold on this site.

By purchasing ANY PRODUCT ON THIS SITE, You Agree to be held 100% liable for any personal injury or damages due to you (Customer) using any of the products in any way other than that manufacturer’s instructions of use printed on the package!

Rubel hossen said...

Health Experts have proven that regular exercise coupled with a good diet allow you to live longer and healthier. In this busy day and age, not everyone has the time to go to the gym - resulting to a lot of overweight people that desperately need to exercise. A healthy alternative is for you to Buy Home Gym Equipments that you can store in your own home or even at your office. Here are some tips when buying home gym equipment.

First, know your fitness goals and keep these goals in mind when you are buying home gym equipment. One of the biggest mistakes that people make is buying the biggest or trendiest fitness machine simply because they like how it looks. More often than not, these end up gathering dust in your storage rooms or garage because you never end up using them. It is important to take note of what particular type of physical activity you want or enjoy doing before you buy your exercise machine. If you are looking to loose a few pounds and you enjoy walking or hiking, a treadmill is the best option for you. If you are looking to tone your lower body while burning calories a stationary bike is your obvious choice. Similarly, Special Equipments for Core Strength Exercises, Strength Training Weight Vests, Core Strength & Abdominal Trainers, Home Cardio Training, Strength Training Power Cages, Strength Training Racks & More.

Second, set aside a budget before Buying Home Gym Equipments. Quality exercise machines do not come cheap. They are constantly exposed to wear and tear when they are used properly. So, pick machines that are built to last and have passed quality certifications to get the most out of your money. If you are operating on a tight budget, think about investing in several weights, We can Provide you High Quality Home Gym Equipments at Very Low Prices for your Complete Uses: Core Strength Exercises, Strength Training Weight Vests, Core Strength & Abdominal Trainers, Home Cardio Training, Strength Training Power Cages, Strength Training Racks & More.

Its the Right Time to Buy Home Gym Equipments for you at Very Low Prices.

raju said...

PMP certification is the globally recognized certification for project management. It is the validity given by the PMI Institute to candidates who clear certain education and professional criteria - Pass PMP.

There are many ways to Pass PMP certification.


Go for the heavy books, memorize them, sit for PMP trainings on your weekend, sit in the long, sleepy PMP video on demand trainings and still have the unsurety of passing the exam.
Get PMP dumps, PMP practice exams, PMP review material and try to memorize hundreds of questions and still fear of forgetting some and getting new questions as PMP changes very frequently.
Contact CBTproxy and through PMP proxy exam, PMP Brain Dump get your PMP certification without any hassle.
There are several sites selling PMP dumps and PMP exam questions which are 90% not reliable. Since there are always new questions in PMP exam, there is no reliability on the PMP dumps. Contact CBTproxy and through our PMP proxy exam, Pass PMP Certification without any hassle. We ensure first time passing guarantee and liberate the candidate from taking the real exam multiple times - PMP dumps.

raju said...

Buy Dank Now began as an idea to create a top-notch delivery service for buy weed online in the US and quickly evolved in much more. Even though California accepted Safe to Buy Marijuana Online in 1996, we felt there was still a major lacking in quality and service. From what once started as a humble, flower-child type movement, evolved into the next California gold rush.

Buy Dank Now Shop is committed to ensuring that your privacy and security is protected at all times, in fact, we care so much that we offer guaranteed stealth delivery to anywhere in the world at no extra cost! Buy Weed Online, Glo Carts, Glo Extracts, Glo Cart, Glo Cartridges, Glo thc Carts, Glo vape, Lions Breath Carts, Big Chief Carts and All orders are fully guaranteed, so whatever happens, nothing will ever stand between you and your weed!

With literally thousands upon thousands of amazing strains from the best breeders in the world, ranging from famous cup-winners to potent, CBD-laden medical strains, High THC powerhouses, Glo Extracts, famous cheese to Buy Marijuana Online and Glo Carts popular white widow strains, all the way through to some of the rarest, hardest-to-find varieties in the world.

Why Is Marijuana Effective for Treating Anxiety? Conventional medicine uses several different kinds of drugs to treat anxiety disorders, including serotonin reuptake inhibitors like Zoloft and tranquilizers like Valium. However, many patients don’t respond well to these medications. One of the non-psychoactive cannabinoids found in marijuana that is commonly used to treat anxiety is cannabidiol (CBD). Various scientists and researchers have experimented with both animals and humans to test the effectiveness of CBD for anxiety treatment.

You can get it all right here at Buy Dank Now! Because we only ever work with breeders who meet our rigorous quality standards, you can be sure that whatever products you get from our Website such as, Glo Carts, Glo Extracts, Glo Cart, Glo Cartridges, Glo thc Carts, Glo vape, Lions Breath Carts, Big Chief Carts, they’ll make exceptional additions to your genetic library!

freya maya said...

Descubre los mejores diseños de alfombras vinilicas y azulejos adhesivos para decoración e interiorismo. Alfombras infantiles Envío gratis