void
-CinemaList::update_screen(ScreenID id, dcpomatic::Screen const& screen)
+CinemaList::update_screen(CinemaID cinema_id, ScreenID screen_id, dcpomatic::Screen const& screen)
{
SQLiteStatement statement(_db, _screens.update("WHERE id=?"));
- statement.bind_text(1, screen.name);
- statement.bind_text(2, screen.notes);
- statement.bind_text(3, screen.recipient->certificate(true));
- statement.bind_text(4, screen.recipient_file.get_value_or(""));
- statement.bind_int64(5, id.get());
+ statement.bind_int64(1, cinema_id.get());
+ statement.bind_text(2, screen.name);
+ statement.bind_text(3, screen.notes);
+ statement.bind_text(4, screen.recipient->certificate(true));
+ statement.bind_text(5, screen.recipient_file.get_value_or(""));
+ statement.bind_int64(6, screen_id.get());
statement.execute();
}
boost::optional<std::pair<CinemaID, Cinema>> cinema_by_name_or_email(std::string const& text) const;
ScreenID add_screen(CinemaID cinema_id, dcpomatic::Screen const& screen);
- void update_screen(ScreenID id, dcpomatic::Screen const& screen);
+ void update_screen(CinemaID cinema_id, ScreenID screen_id, dcpomatic::Screen const& screen);
void remove_screen(ScreenID id);
boost::optional<dcpomatic::Screen> screen(ScreenID screen_id) const;
std::vector<std::pair<ScreenID, dcpomatic::Screen>> screens(CinemaID cinema_id) const;
screen->recipient = dialog.recipient();
screen->recipient_file = dialog.recipient_file();
screen->trusted_devices = dialog.trusted_devices();
- cinemas.update_screen(screen_id, *screen);
+ cinemas.update_screen(cinema_id, screen_id, *screen);
auto item = screen_to_item(screen_id);
DCPOMATIC_ASSERT (item);
}
+BOOST_AUTO_TEST_CASE(update_screen_test)
+{
+ auto const db = setup("update_screen_test");
+
+ CinemaList cinemas(db);
+ auto const cinema_id = cinemas.add_cinema({"Name", { "foo@bar.com" }, "", dcp::UTCOffset()});
+
+ auto screen = dcpomatic::Screen(
+ "Screen 1",
+ "Smells of popcorn",
+ dcp::Certificate(dcp::file_to_string("test/data/cert.pem")),
+ string("test/data/cert.pem"),
+ vector<TrustedDevice>{}
+ );
+
+ auto const screen_id = cinemas.add_screen(cinema_id, screen);
+
+ screen.name = "Screen 1 updated";
+ screen.notes = "Smells of popcorn and hope";
+ cinemas.update_screen(cinema_id, screen_id, screen);
+
+ auto check = cinemas.screens(cinema_id);
+ BOOST_REQUIRE_EQUAL(check.size(), 1U);
+ BOOST_CHECK(check[0].first == screen_id);
+ BOOST_CHECK_EQUAL(check[0].second.name, "Screen 1 updated");
+ BOOST_CHECK_EQUAL(check[0].second.notes, "Smells of popcorn and hope");
+ BOOST_CHECK(check[0].second.recipient == dcp::Certificate(dcp::file_to_string("test/data/cert.pem")));
+ BOOST_CHECK(check[0].second.recipient_file == string("test/data/cert.pem"));
+}
+
+
BOOST_AUTO_TEST_CASE(cinemas_list_copy_from_xml_test)
{
ConfigRestorer cr("build/test/cinemas_list_copy_config");