Sha256: 954388ff4221bf48e79c5be72d4f706adf4390ae0a6f6660cd9e8c5a94e95c14

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

# -*- encoding: utf-8 -*-
# frozen_string_literal: true
require 'test_helper'

class ChangesTest < Minitest::Test
  def setup
    @user = User.new
  end

  def test_check_statement_keys
    statement = K::Replace::Statement.new "Hello, ##__User.name__##!"
    assert_equal statement.keys.size, 1
  end

  def test_replace_key
    statement = K::Replace::Statement.new "Hello, ##__User.name__##!"
    @user.name = 'John Doe'

    replaced = statement.replace({ user: @user })

    assert_equal replaced, "Hello, John Doe!"
  end

  def test_replace_multiple_keys
    statement = K::Replace::Statement.new 'I\'m ##__User.name__## and I\'m ##__User.age__## years old.'
    @user.name = 'John Doe'
    @user.age = 18

    replaced = statement.replace({ user: @user })

    assert_equal replaced, 'I\'m John Doe and I\'m 18 years old.'
  end

  def test_replace_key_to_nested_object_property
    statement = K::Replace::Statement.new 'I\'m ##__User.name__## and I live in ##__User.address.street__##'
    @user.name = 'John Doe'
    @user.address = Address.new('Telegraph Av, 123')

    replaced = statement.replace({ user: @user })

    assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123'
  end

  def test_replace_key_to_deep_nested_object_property
    statement = K::Replace::Statement.new 'I\'m ##__User.name__## and I live in ##__User.address.street__## - ##__User.address.city.name__##'
    @user.name = 'John Doe'
    @address = Address.new('Telegraph Av, 123')
    @address.city = City.new('Miami')
    @user.address = @address

    replaced = statement.replace({ user: @user })

    assert_equal replaced, 'I\'m John Doe and I live in Telegraph Av, 123 - Miami'
  end

  class User
    attr_accessor :name, :age, :address

    def initialize
      @address = Address.new
    end
  end

  class Address
    attr_accessor :street, :city

    def initialize(street = nil)
      @street = street
    end
  end

  class City
    attr_accessor :name

    def initialize(name)
      @name = name
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
k-replace-1.0.0 test/replace/statement_test.rb