require 'test_helper' class CallbacksTest < ActiveSupport::TestCase def test_translation_states_created_after_vulgatified_item_created post = create(:not_translated_post) locales = Vulgata::Helpers.available_locales assert_equal post.translation_states.count, locales.count # test source translation state source_translation_state = post.translation_states.find_by(status: 0) assert_not_nil source_translation_state assert_equal :source, source_translation_state.status assert_nil source_translation_state.priority assert_equal post.id, source_translation_state.item_id assert_equal post.vulgata_item_type, source_translation_state.item_type assert_nil source_translation_state.user assert_equal :en, source_translation_state.locale.to_sym # test source translation state versions assert_equal 1, source_translation_state.versions.count assert_nil source_translation_state.versions.last.user assert_equal source_translation_state.status, source_translation_state.versions.last.status assert_equal source_translation_state.priority, source_translation_state.versions.last.priority assert_nil source_translation_state.versions.last.translation_data assert_nil source_translation_state.versions.last.word_count translation_states = post.translation_states - [source_translation_state] locales = locales - [:en] # test translation states translation_states.each do |translation_state| assert_equal :pending, translation_state.status assert_equal post.vulgata_priority, translation_state.priority assert_equal post.id, translation_state.item_id assert_equal post.vulgata_item_type, translation_state.item_type assert_nil translation_state.user assert translation_state.locale.to_sym.in?(locales) # test translation state versions assert_equal 1, translation_state.versions.count assert_equal translation_state.user, translation_state.versions.last.user assert_equal translation_state.status, translation_state.versions.last.status assert_equal translation_state.priority, translation_state.versions.last.priority assert_nil translation_state.versions.last.translation_data assert_nil translation_state.versions.last.word_count end end def test_translation_states_created_for_existing_translations post = create(:translated_post) post.translation_states.destroy_all post.init_vulgata_states # test translation states locales = Vulgata::Helpers.available_locales assert_equal post.translation_states.count, locales.count source_translation_state = post.translation_states.find_by(status: 0) assert_equal :source, source_translation_state.status assert_nil source_translation_state.priority assert_equal post.id, source_translation_state.item_id assert_equal post.vulgata_item_type, source_translation_state.item_type assert_nil source_translation_state.user_id assert_equal :en, source_translation_state.locale.to_sym german_translation_state = post.translation_states.find_by(locale: :de) assert_equal :approved, german_translation_state.status assert_equal post.id, german_translation_state.item_id assert_equal post.vulgata_item_type, german_translation_state.item_type assert_nil german_translation_state.user_id # test translation states versions assert_equal 1, source_translation_state.versions.count assert_nil source_translation_state.versions.last.user assert_equal source_translation_state.status, source_translation_state.versions.last.status assert_equal source_translation_state.priority, source_translation_state.versions.last.priority assert_nil source_translation_state.versions.last.translation_data assert_nil source_translation_state.versions.last.word_count assert_equal 1, german_translation_state.versions.count assert_equal german_translation_state.user, german_translation_state.versions.last.user assert_equal german_translation_state.status, german_translation_state.versions.last.status assert_equal german_translation_state.priority, german_translation_state.versions.last.priority assert_nil german_translation_state.versions.last.translation_data assert_nil german_translation_state.versions.last.word_count end def test_translation_states_pending_after_vulgatified_item_updated post = create(:translated_post) # update original object post.title = "Post about Hummus" post.save # test translation states german_translation_state = post.translation_states.find_by(locale: :de) assert_equal :pending, german_translation_state.status assert_nil german_translation_state.user # test translation state versions assert_equal 2, german_translation_state.versions.count assert_nil german_translation_state.versions.last.user assert_nil german_translation_state.versions.last.translation_data assert_nil german_translation_state.versions.last.word_count end def test_translation_states_deleted_after_vulgata_object_deleted post = create(:translated_post) post.destroy translation_states = Vulgata::TranslationState.find_by(item: post) assert_nil translation_states end end