CarlaTestHelper

Description

This repo contains a testing library used in Carla end-to-end tests. It provides a library to describe and test conversations.

Requirements

Installation

If available in Hex, the package can be installed by adding carla_test_helper to your list of dependencies in mix.exs:

def deps do
  [
    {:carla_test_helper, "~> 0.1.0"}
  ]
end

You'll then need to update your config.exs so it contains the following configs

V2

config :carla_test_helper,
  bot_version: "v2",
  directline_token: "my_token"

V1

config :carla_test_helper,
  bot_version: "v1",

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/carla_test_helper.

Example Test Case

If we want to write a test case for the "Request Detail - request details for optima" scenario, our file would look like this:

defmodule BotTestsTest do
  use CarlaTestHelper.Case, async: true
  import CarlaTestHelper

  describe "request.detail" do

    carlatest "should provide details on optima", do: [
      # write conversation tests here 
      # message("optima", "request.details.optima")
    ]
    
  end

end

Helper Functions

message

Parameters:

Sends message for the asserts the response is the expected_action.

message("optima", "request.details.optima")

quick_reply

Parameters:

Uses quick reply button using label and asserts the response is the expected_action.

quick_reply("Build & Price", "build:_optima")

button_action

Parameters:

Similar to quick reply, finds button using label and asserts the response is expected_action.

button_action("Ok", "hello_2")

button_linkout

Parameters:

Similar to quick reply, finds button using label and asserts the button payload is value.

button_linkout("Features & Specs", "https://kia.com/us/en/vehicle/optima/2018/features")

button_linkout

Parameters:

Similar to quick reply, finds button using label, asserts the button payload is value and contains the list of params.

button_linkout("See Offers", "https://kia.com/us/en/offers/2018/10036", ["series=optima", "offers=3,2,1"])

gallery_card_button_action

Parameters:

Uses gallery card item at index, finds a button using label and then asserts the button payload is value and asserts the response is expected_action.

Note: Indexing starts at 0

gallery_card_button_action(2, "See Offers", "request.offers") # Targets the 3rd gallery card

gallery_card_button_linkout

Parameters:

Uses gallery card item at index, finds a button using label, asserts the button payload is uri.

Note: Indexing starts at 0

gallery_card_button_linkout(0, "See Offers", "http://example.com") # Targets the 1st gallery card

gallery_card_button_linkout

Parameters:

Uses gallery card item at index, finds a button using label, asserts the button payload is uri and contains the list of params.

Note: Indexing starts at 0

gallery_card_button_linkout(0, "See Offers", "http://example.com") # Targets the 1st gallery card

debug_last_response

Prints out JSON of last response in the console

debug_last_response()