2016-04-28 11 views
0

Ich verwendete das Standardgerüst, um ein user Modell mit den Attributen first_name und last_name zu erstellen. Ich schrieb eine Validierung, die überprüft, ob first_name OR last_name vorhanden sind. Die Standardvalidierung prüft auf AND. Was ist der beste Weg, um einen Test hinzuzufügen, der testet, dass first_name oder last_name vorhanden sind?Testen einer OR-Validierung

defmodule Vutuv.UserTest do 
    use Vutuv.ModelCase 

    alias Vutuv.User 

    @valid_attrs %{first_name: "some content", last_name: "some content"} 
    @invalid_attrs %{} 

    test "changeset with valid attributes" do 
    changeset = User.changeset(%User{}, @valid_attrs) 
    assert changeset.valid? 
    end 

    test "changeset with invalid attributes" do 
    changeset = User.changeset(%User{}, @invalid_attrs) 
    refute changeset.valid? 
    end 
end 

Antwort

2

würde ich @valid_attrs eine Liste mit allen gültigen Kombinationen machen und behaupten, dass sie alle in einem Test gültig sind.

@valid_attrs [%{first_name: "some content", last_name: "some content"}, 
       %{first_name: "some content"}, 
       %{last_name: "some content"}] 

test "changeset with valid attributes" do 
    for valid_attrs <- @valid_attrs do 
    changeset = User.changeset(%User{}, valid_attrs) 
    assert changeset.valid? 
    end 
end 

Sie könnten auch separate Tests für jede von ihnen erstellen.