public void UsrFavoursParentMusicType_BannerTargetsChild_BannerIsServed()
		{
			Usr u = new Usr();
			u.Name = Guid.NewGuid().ToString();
			u.Update();

			MusicType parentMusicType = new MusicType() { ParentK = 1 };
			parentMusicType.Update();

			MusicType childMusicType = new MusicType()
			{
				ParentK = parentMusicType.K
			};
			childMusicType.Update();

			UsrMusicTypeFavourite umtf = new UsrMusicTypeFavourite()
			{
				MusicTypeK = parentMusicType.K,
				UsrK = u.K
			};
			umtf.Update();

			Banner b = new Banner()
			{
				IsMusicTargetted = true
			};
			b.Update();

			b.SaveMusicTargetting(new List<int>() { childMusicType.K });

			MusicTypesFavouredByIdentityRule rule = new MusicTypesFavouredByIdentityRule(new UsrIdentity(u));
			RequestRules rr = new RequestRules();
			rr.MusicTypes = rule;
			ReadOnlyCollection<BannerDataHolder> results = rr.GetBannersSatsfyingQueryConditionsInTimeslot(Timeslots.GetCurrentTimeslot());
			Assert.IsTrue(ContainsBanner(b.K, results));
		}
		public void UsrFavoursOneMusicType_BannerTargetsAnother_BannerIsNotServed()
		{
			Usr u = new Usr();
			u.Name = Guid.NewGuid().ToString();
			u.Update();

			MusicType musicTypeA = new MusicType() { ParentK = 1 };
			musicTypeA.Update();

			MusicType musicTypeB = new MusicType() { ParentK = 1 };
			musicTypeB.Update();

			UsrMusicTypeFavourite umtf = new UsrMusicTypeFavourite()
			{
				MusicTypeK = musicTypeA.K,
				UsrK = u.K
			};
			umtf.Update();

			Banner b = new Banner()
			{
				IsMusicTargetted = true
			};
			b.Update();

			BannerMusicType bmt = new BannerMusicType()
			{
				BannerK = b.K,
				MusicTypeK = musicTypeB.K
			};
			bmt.Update();

			MusicTypesFavouredByIdentityRule rule = new MusicTypesFavouredByIdentityRule(new UsrIdentity(u));
			RequestRules rr = new RequestRules() { MusicTypes = rule };
			ReadOnlyCollection<BannerDataHolder> results = rr.GetBannersSatsfyingQueryConditionsInTimeslot(Timeslots.GetCurrentTimeslot());
			Assert.IsFalse(ContainsBanner(b.K, results));
		}