Exemple #1
0
// TestRelations tests if the models relations is ok.
func TestRelations(t *testing.T) {
	customer := factory.NewCustomer()
	product := factory.NewProduct()

	order := factory.NewOrder(customer)
	if order.OrderCustomer != customer {
		t.Error("order.OrderCustomer and customer differ.")
	}

	orderItem := factory.NewOrderItem(order, product)
	if orderItem.ItemProduct != product {
		t.Error("orderItem.ItemProduct and product differ.")
	} else if orderItem.ItemOrder != order {
		t.Error("orderItem.ItemOrder and order differ.")
	}
}
func TestCrud(t *testing.T) {
	customer := factory.NewCustomer()
	customer.Name = "Davi Diório Mendes"
	customer.Save()

	customer.Name = "Davi Mendes"
	customer.Save()

	prod1 := factory.NewProduct()
	prod1.Name = "Prod1"
	prod1.Description = "Description of product 1."
	prod1.Price = 10.0
	prod1.Save()

	prod2 := factory.NewProduct()
	prod2.Name = "Prod2"
	prod2.Description = "Description of product 2."
	prod2.Price = 20.0
	prod2.Save()

	order := factory.NewOrder(customer)

	item := factory.NewOrderItem(order, prod1)
	order.Items = append(order.Items, item)

	item = factory.NewOrderItem(order, prod2)
	order.Items = append(order.Items, item)

	order.Save()

	testCustomer := storage.GetCustomer(customer.ID)
	if testCustomer.ID != customer.ID ||
		testCustomer.Name != customer.Name {
		t.Error("Customer read differ from customer saved.")
	}

	testProduct := storage.GetProduct(prod1.ID)
	if testProduct.ID != prod1.ID ||
		testProduct.Name != prod1.Name ||
		testProduct.Description != prod1.Description {
		t.Error("Product read differ from prod1 saved.")
	}

	testProduct.Read(prod2.ID)
	if testProduct.ID != prod2.ID ||
		testProduct.Name != prod2.Name ||
		testProduct.Description != prod2.Description {
		t.Error("Product read differ from prod2 saved.")
	}

	testOrder := storage.GetOrder(order.ID)
	if testOrder.ID != order.ID ||
		testOrder.OrderCustomer.ID != order.OrderCustomer.ID {
		t.Errorf("Order read differ from order saved.\n"+
			"ID:\n\ttestOrder: %s\n\torder: %s\n\n"+
			"Customer ID:\n\ttestOrder: %s\n\torder: %s",
			testOrder.ID, order.ID,
			testOrder.OrderCustomer.ID, order.OrderCustomer.ID)
	} else {
		item1 := testOrder.Items[0]
		item2 := testOrder.Items[1]

		if item1.ItemProduct.ID == order.Items[1].ItemProduct.ID {
			item1, item2 = item2, item1
		}

		if item1.ItemProduct.ID != order.Items[0].ItemProduct.ID ||
			item1.Quantity != order.Items[0].Quantity ||
			item1.UnitPrice != order.Items[0].UnitPrice {
			t.Error("Item1 read differ from item1 saved.")
		}

		if item2.ItemProduct.ID != order.Items[1].ItemProduct.ID ||
			item2.Quantity != order.Items[1].Quantity ||
			item2.UnitPrice != order.Items[1].UnitPrice {
			t.Error("Item2 read differ from item2 saved.")
		}
	}

	customer.Delete()
	prod1.Delete()
	prod2.Delete()
}