summaryrefslogtreecommitdiffstats
path: root/proxy
diff options
context:
space:
mode:
Diffstat (limited to 'proxy')
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java7
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java21
2 files changed, 20 insertions, 8 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
index 3e3cc66..ecc829e 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
@@ -26,6 +26,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
@@ -72,9 +73,9 @@ public class Consumer {
inverseJoinColumns=@JoinColumn(name="CHILD_CONSUMER_ID"))
private Set<Consumer> childConsumers;
- // TODO: Are we sure we want to track this explicitly? Wouldn't we examine the
- // entitlements we're consuming and the products associated to them for this info?
- @OneToMany
+ // Separate mapping because in theory, a consumer could be consuming products they're
+ // not entitled to.
+ @ManyToMany
@JoinTable(name="cp_consumer_products",
joinColumns=@JoinColumn(name="consumer_id"),
inverseJoinColumns=@JoinColumn(name="product_id"))
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
index 7fccd33..0ed5364 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
@@ -156,16 +156,14 @@ public class ConsumerTest extends DatabaseTestFixture {
public void testConsumerHierarchy() {
beginTransaction();
- Consumer child1 = new Consumer("child1asd", owner, consumerType);
- child1.setMetadataField("foo6", "bar");
-// child1.addConsumedProduct(rhel);
+ Consumer child1 = new Consumer("child1", owner, consumerType);
+ child1.setMetadataField("foo", "bar");
em.persist(child1);
commitTransaction();
beginTransaction();
Consumer child2 = new Consumer("child2", owner, consumerType);
- child2.setMetadataField("foo87", "bar");
-// child2.addConsumedProduct(rhel);
+ child2.setMetadataField("foo", "bar");
em.persist(child2);
commitTransaction();
@@ -178,5 +176,18 @@ public class ConsumerTest extends DatabaseTestFixture {
Consumer lookedUp = (Consumer)em.find(Consumer.class, consumer.getId());
assertEquals(2, lookedUp.getChildConsumers().size());
}
+
+ // This this looks like a stupid test but this was actually failing at one point. :)
+ @Test
+ public void testMultipleConsumersSameConsumedProduct() {
+ beginTransaction();
+
+ // Default consumer already consumes RHEL:
+ Consumer child1 = new Consumer("child1", owner, consumerType);
+ child1.setMetadataField("foo", "bar");
+ child1.addConsumedProduct(rhel);
+ em.persist(child1);
+ commitTransaction();
+ }
}