GitXplorerGitXplorer
k

pizzaworld

public
1 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
373c237ecd549934bc68d70fe48b808b711bba3f

Wrzucam aplikację.

committed 13 years ago

README

The README file for this repository.

= Pizzaworld

Klient posiada sieć pizzerii i potrzebuje aplikacji do zarządzania kartami dań w nich. Każda pizzeria posiada nazwę (unikalną), adres i godziny otwarcia. W każdej pizzerii można serwować różne rodzaje pizzy. Każdy rodzaj pizzy ma swoją nazwę, cenę i listę składników (jako opis).

== Założenia

Najważniejsze założenie: sieć pizzerii posiada zbiór przepisów (zestawów dodatków) na pizzę, które przypisuje do swoich lokali. Stąd każda pizza ma jedną cenę we wszystkich lokalach, a jej zmiana (jak i innych atrybutów) powoduje zaktualizowanie menu we wszystkich restauracjach, które miały ją w ofercie.

Nie jest to jedyne możliwe podejście. Innym, równie dobrym, byłoby założenie że każda restauracja ma zupełnie oddzielne menu. Wówczas mogłoby istnieć wiele pizz o tej samej nazwie i tym samym składzie, ale o różnej cenie, każda przypisana do innego lokalu. Modyfikacja czy dodanie nowej pizzy do każdego lokalu należałoby robić osobno.

A można zrobić jeszcze lepiej. Na bazie obecnego schematu dodać w tabeli łączącej pizzas_restaurants pole ceny, stworzyć join model, i użyć relacji has_many :through. Wtedy mamy jedno i drugie - zmiany w przepisie od razu aktualizują menu we wszystkich restauracjach, ale ceny sa ustalane per lokal.

= Uruchamianie

Wymagania: ruby 1.9.2, bundler, zainstalowany pakiet sqlite3-dev (do zbudowania niezbędnego gema)

Z linii poleceń po kolei:

$ git clone http://github.com/k3rni/pizzaworld $ cd pizzaworld $ bundle install $ rake db:setup db:seed $ rails server

= Testy

Ze względu na prostotę modeli (które nie zawierają żadnych nietrywialnych metod), nie ma do nich unittestów (gdyby były, to testowałyby ActiveRecord, a nie aplikację). Dodatkowych kilka testów jest za to w testach funkcjonalnych, sprawdzają one zachowanie się akcji create i update w obliczu powtórzonych danych.