Пример #1
0
// Register the monolog logging service
$app->register(new Silex\Provider\MonologServiceProvider(), array('monolog.logfile' => 'php://stderr'));
// Register view rendering
$app->register(new Silex\Provider\TwigServiceProvider(), array('twig.path' => __DIR__ . '/../views'));
// Register patch and delete http methods
use Symfony\Component\HttpFoundation\Request;
Request::enableHttpMethodParameterOverride();
$app->get('/', function () use($app) {
    return $app['twig']->render('index.html.twig');
    #, array('options' => Option::getAll()));
});
$app->post('/options', function () use($app) {
    $suitable_option_names = $_POST["option_names"];
    $suitable_option_ids = Option::getIdsFromNames($suitable_option_names);
    $options = Option::getObjects($suitable_option_ids);
    $suitable_restaurants = Restaurant::suitableRestaurants($suitable_option_ids);
    return $app['twig']->render('results.html.twig', array('suitable_restaurants' => $suitable_restaurants, 'options' => $options));
});
$app->get('/admin', function () use($app) {
    return $app['twig']->render('admin.html.twig', array('restaurants' => Restaurant::getAll(), 'options' => Option::getAll()));
});
$app->post('/add_restaurants', function () use($app) {
    $restaurant_name = new Restaurant($_POST['restaurant_name']);
    $restaurant_name->save();
    return $app['twig']->render('admin.html.twig', array('restaurants' => Restaurant::getAll(), 'options' => Option::getAll()));
});
$app->post('/add_options', function () use($app) {
    $option_name = new Option($_POST['option_name']);
    $option_name->save();
    return $app['twig']->render('admin.html.twig', array('restaurants' => Restaurant::getAll(), 'options' => Option::getAll()));
});
 function test_suitableRestaurants()
 {
     // arrange
     $restaurant_name = "Taco Hell";
     $test_restaurant = new Restaurant($restaurant_name);
     $test_restaurant->save();
     $restaurant_name2 = "Burger Queen";
     $test_restaurant2 = new Restaurant($restaurant_name2);
     $test_restaurant2->save();
     $option_name = "Shellfish-free";
     $test_option = new Option($option_name);
     $test_option->save();
     $option_name2 = "Gasoline-free";
     $test_option2 = new Option($option_name2);
     $test_option2->save();
     $option_name3 = "Soy-free";
     $test_option3 = new Option($option_name3);
     $test_option3->save();
     // act
     $test_restaurant->addOption($test_option2);
     $test_restaurant->addOption($test_option3);
     $test_restaurant2->addOption($test_option);
     $test_restaurant2->addOption($test_option2);
     $test_restaurant2->addOption($test_option3);
     $option_ids = array();
     array_push($option_ids, $test_option->getId());
     array_push($option_ids, $test_option3->getId());
     $result = Restaurant::suitableRestaurants($option_ids);
     // assert
     $this->assertEquals([$test_restaurant2], $result);
 }