17
17
from maastesting.factory import factory
18
18
from maastesting.testcase import MAASTestCase
19
from provisioningserver.import_images.product_mapping import ProductMapping
19
from provisioningserver.import_images.boot_image_mapping import (
22
from provisioningserver.import_images.product_mapping import (
20
26
from provisioningserver.import_images.testing.factory import (
21
27
make_boot_resource,
123
131
product_dict.add(resource, subarch)
124
132
resource['other_item'] = factory.make_name('other')
125
133
self.assertEqual([subarch], product_dict.get(resource))
136
class TestMapProducts(MAASTestCase):
137
"""Tests for `map_products`."""
139
def test_maps_empty_dict_to_empty_dict(self):
140
empty_boot_image_dict = BootImageMapping()
141
self.assertEqual({}, map_products(empty_boot_image_dict).mapping)
143
def test_maps_boot_resource_by_content_id_product_name_and_version(self):
144
image = make_image_spec()
145
resource = make_boot_resource()
146
boot_dict = set_resource(resource=resource.copy(), image_spec=image)
150
resource['content_id'],
151
resource['product_name'],
152
resource['version_name'],
155
map_products(boot_dict).mapping)
157
def test_concatenates_similar_resources(self):
158
image1 = make_image_spec()
159
image2 = make_image_spec()
160
resource = make_boot_resource()
161
boot_dict = BootImageMapping()
162
# Create two images in boot_dict, both containing the same resource.
163
for image in [image1, image2]:
165
boot_dict=boot_dict, resource=resource.copy(),
168
products_mapping = map_products(boot_dict)
170
resource['content_id'],
171
resource['product_name'],
172
resource['version_name'],
174
self.assertEqual([key], products_mapping.mapping.keys())
175
self.assertItemsEqual(
176
[image1.subarch, image2.subarch],
177
products_mapping.get(resource))