|
|
|
|
@@ -23,10 +23,7 @@ class TestProducts(TestCase):
|
|
|
|
|
def test_import_products(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
all_products = self._get_products()
|
|
|
|
|
self.assertEqual(
|
|
|
|
|
len(all_products),
|
|
|
|
|
3
|
|
|
|
|
)
|
|
|
|
|
self.assertEqual(len(all_products), 3)
|
|
|
|
|
|
|
|
|
|
def test_import_products_with_categories(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
@@ -38,77 +35,74 @@ class TestProducts(TestCase):
|
|
|
|
|
categories_on_csv = ["Cafes", "Alimentos", "Aceites"]
|
|
|
|
|
categories = ProductCategory.objects.all()
|
|
|
|
|
self.assertCountEqual(
|
|
|
|
|
[c.name for c in categories],
|
|
|
|
|
categories_on_csv
|
|
|
|
|
[c.name for c in categories], categories_on_csv
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def test_update_products(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
first_products = self._get_products()
|
|
|
|
|
self._import_csv('example_products2.csv')
|
|
|
|
|
self._import_csv("example_products2.csv")
|
|
|
|
|
seconds_products = self._get_products()
|
|
|
|
|
self.assertEqual(len(first_products), len(seconds_products))
|
|
|
|
|
|
|
|
|
|
def test_preserve_id_on_import(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
id_aceite = Product.objects.get(name='Aceite').id
|
|
|
|
|
self._import_csv('example_products2.csv')
|
|
|
|
|
id_post_updated = Product.objects.get(name='Aceite').id
|
|
|
|
|
id_aceite = Product.objects.get(name="Aceite").id
|
|
|
|
|
self._import_csv("example_products2.csv")
|
|
|
|
|
id_post_updated = Product.objects.get(name="Aceite").id
|
|
|
|
|
self.assertEqual(id_aceite, id_post_updated)
|
|
|
|
|
|
|
|
|
|
def test_update_categories_on_import(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
first_products = self._get_products()
|
|
|
|
|
first_categories = {p["name"]: p["categories"] for p in first_products}
|
|
|
|
|
self._import_csv('example_products2.csv')
|
|
|
|
|
first_categories = {
|
|
|
|
|
p["name"]: p["categories"] for p in first_products
|
|
|
|
|
}
|
|
|
|
|
self._import_csv("example_products2.csv")
|
|
|
|
|
updated_products = self._get_products()
|
|
|
|
|
updated_categories = {
|
|
|
|
|
p["name"]: p["categories"] for p in updated_products}
|
|
|
|
|
p["name"]: p["categories"] for p in updated_products
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.assertIn('Cafes', first_categories['Arroz'])
|
|
|
|
|
self.assertNotIn('Granos', first_categories['Arroz'])
|
|
|
|
|
self.assertIn("Cafes", first_categories["Arroz"])
|
|
|
|
|
self.assertNotIn("Granos", first_categories["Arroz"])
|
|
|
|
|
|
|
|
|
|
self.assertIn('Granos', updated_categories['Arroz'])
|
|
|
|
|
self.assertNotIn('Cafes', updated_categories['Arroz'])
|
|
|
|
|
self.assertIn("Granos", updated_categories["Arroz"])
|
|
|
|
|
self.assertNotIn("Cafes", updated_categories["Arroz"])
|
|
|
|
|
|
|
|
|
|
def test_update_price(self):
|
|
|
|
|
self._import_csv()
|
|
|
|
|
first_products = self._get_products()
|
|
|
|
|
first_prices = {p["name"]: p["price_list"] for p in first_products}
|
|
|
|
|
expected_first_prices = {
|
|
|
|
|
"Aceite": '50000.00',
|
|
|
|
|
"Café": '14000.00',
|
|
|
|
|
"Arroz": '7000.00'
|
|
|
|
|
"Aceite": "50000.00",
|
|
|
|
|
"Café": "14000.00",
|
|
|
|
|
"Arroz": "7000.00",
|
|
|
|
|
}
|
|
|
|
|
self.assertDictEqual(
|
|
|
|
|
expected_first_prices,
|
|
|
|
|
first_prices
|
|
|
|
|
)
|
|
|
|
|
self.assertDictEqual(expected_first_prices, first_prices)
|
|
|
|
|
|
|
|
|
|
self._import_csv('example_products2.csv')
|
|
|
|
|
self._import_csv("example_products2.csv")
|
|
|
|
|
updated_products = self._get_products()
|
|
|
|
|
updated_prices = {p["name"]: p["price_list"] for p in updated_products}
|
|
|
|
|
updated_prices = {
|
|
|
|
|
p["name"]: p["price_list"] for p in updated_products
|
|
|
|
|
}
|
|
|
|
|
expected_updated_prices = {
|
|
|
|
|
"Aceite": '50000.00',
|
|
|
|
|
"Café": '15000.00',
|
|
|
|
|
"Arroz": '6000.00'
|
|
|
|
|
"Aceite": "50000.00",
|
|
|
|
|
"Café": "15000.00",
|
|
|
|
|
"Arroz": "6000.00",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.assertDictEqual(
|
|
|
|
|
expected_updated_prices,
|
|
|
|
|
updated_prices
|
|
|
|
|
)
|
|
|
|
|
self.assertDictEqual(expected_updated_prices, updated_prices)
|
|
|
|
|
|
|
|
|
|
def _get_products(self):
|
|
|
|
|
products_response = self.client.get("/don_confiao/productos")
|
|
|
|
|
return json.loads(products_response.content.decode('utf-8'))
|
|
|
|
|
return json.loads(products_response.content.decode("utf-8"))
|
|
|
|
|
|
|
|
|
|
def _import_csv(self, csv_file='example_products.csv'):
|
|
|
|
|
app_name = "don_confiao"
|
|
|
|
|
def _import_csv(self, csv_file="example_products.csv"):
|
|
|
|
|
app_name = "don_confiao/tests/data_example"
|
|
|
|
|
app_dir = os.path.join(settings.BASE_DIR, app_name)
|
|
|
|
|
example_csv = os.path.join(app_dir, csv_file)
|
|
|
|
|
with open(example_csv, 'rb') as csv:
|
|
|
|
|
with open(example_csv, "rb") as csv:
|
|
|
|
|
self.client.post(
|
|
|
|
|
"/don_confiao/importar_productos",
|
|
|
|
|
{"csv_file": csv}
|
|
|
|
|
"/don_confiao/importar_productos", {"csv_file": csv}
|
|
|
|
|
)
|
|
|
|
|
|